力扣 13.罗马数字转整数

岁酱吖の 提交于 2019-11-29 23:16:16

class Solution {
    public int romanToInt(String s) {
        String str = s;
		int num = 0;
		while (str.contains("IV")) {
			int index = str.indexOf("IV");
			try {
				str = str.substring(0, index) + str.substring(index + 2 , str.length()) + str.charAt(str.length());
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			
			num = num + 4;
		}
		while (str.contains("XL")) {
			int index = str.indexOf("XL");
			try {
				str = str.substring(0, index) + str.substring(index + 2, str.length());
				
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			num = num + 40;
		}
		while (str.contains("XC")) {
			int index = str.indexOf("XC");
			try {
				str = str.substring(0, index) + str.substring(index + 2, str.length());
				
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			num = num + 90;
		}
		while (str.contains("IX")) {
			int index = str.indexOf("IX");
			try {
				str = str.substring(0, index) + str.substring(index + 2, str.length());
				
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			num = num + 9;
		}
		while (str.contains("CD")) {
			int index = str.indexOf("CD");
			 
			try {
				str = str.substring(0, index) + str.substring(index + 2, str.length());
				
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			num = num + 400;
		}
		while (str.contains("CM")) {
			int index = str.indexOf("CM");
			try {
				str = str.substring(0, index) + str.substring(index + 2, str.length());
				
			} catch (Exception e) {
				str = str.substring(0, index);
			}
			num = num + 900;
		}
		for(int i = 0; i < str.length(); i ++) {
			switch (str.charAt(i)) {
			case 'I':
				num = num + 1;
				break;
			case 'V':
				num = num + 5;
				break;
			case 'X':
				num = num + 10;
				break;
			case 'L':
				num = num + 50;
				break;
			case 'C':
				num = num + 100;
				break;
			case 'D':
				num = num + 500;
				break;
			case 'M':
				num = num + 1000;
				break;

			default:
				throw new IllegalArgumentException("Unexpected value: " + str.charAt(i));
			}
		}
		return num;
        
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!