欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

罗马数字转整数

程序员文章站 2022-03-02 23:38:56
罗马数字转整数题目来源:罗马数字转整数问题描述:问题分析:该题目最麻烦的地方就是,需要考虑左右的罗马数字,进行加或减。问题解决:可以将字符串倒着遍历,这样可以只考虑做减法的时候(只需多往前验证一个即可)代码实现package leetcode;public class test13 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(...

罗马数字转整数

题目来源:罗马数字转整数

问题描述:罗马数字转整数

问题分析:

该题目最麻烦的地方就是,需要考虑左右的罗马数字,进行加或减。

问题解决:

可以将字符串倒着遍历,这样可以只考虑做减法的时候(只需多往前验证一个即可)

代码实现

package leetcode;

public class test13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(romanToInt("VII"));

	}
	
    public static int romanToInt(String s) {
    	int sum=0;
    	int i =s.length()-1;
    	boolean flag=true;
    	while(flag) {
    		if(s.charAt(i)=='I') {
    			sum+=1;
    		}else if(s.charAt(i)=='V'){
    			sum+=5;
    			if(i-1>=0&&s.charAt(i-1)=='I') {
    				sum--;
    				i--;
    			}
    		}else if(s.charAt(i)=='X') {
    			sum+=10;
    			if(i-1>=0&&s.charAt(i-1)=='I') {
    				sum--;
    				i--;
    			}
    		}else if(s.charAt(i)=='L') {
    			sum+=50;
    			if(i-1>=0&&s.charAt(i-1)=='X') {
    				sum-=10;
    				i--;
    			}
    		}else if(s.charAt(i)=='C') {
    			sum+=100;
    			if(i-1>=0&&s.charAt(i-1)=='X') {
    				sum-=10;
    				i--;
    			}
    		}else if(s.charAt(i)=='D') {
    			sum+=500;
    			if(i-1>=0&&s.charAt(i-1)=='C') {
    				sum-=100;
    				i--;
    			}
    		}else if(s.charAt(i)=='M') {
    			sum+=1000;
    			if(i-1>=0&&s.charAt(i-1)=='C') {
    				sum-=100;
    				i--;
    			}
    		}
    		i--;
    		if(i<0) {
    			flag=false;
    		}
    	}
    	return sum;
    }

}

本文地址:https://blog.csdn.net/weixin_45282433/article/details/112288165