用户登录
用户注册

分享至

罗马数字转整数

  • 作者: 萬千寵愛-范范
  • 来源: 51数据库
  • 2021-07-09

罗马数字转整数

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

问题描述:

问题分析:

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

问题解决:

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

代码实现

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;
    }

}

软件
前端设计
程序设计
Java相关