leetcode-13罗马字符转整数
算法:转换的规律是先逐字符按照对应的阿拉伯数字累加,然后对于特殊的(I、X、C出现在左侧)要处理。处理方法:出现特殊字符组合减去双倍的左侧字符(在开始的处理中已经加过一次,而实际的结果中却是要减去,那么就需要在加的基础上减去两倍)。
Code:
vertion : Java
1 class Solution { 2 public int romanToInt(String s) { 3 int ans = 0; 4 //处理特定字符 5 if(s.indexOf("IV") != -1) 6 { 7 ans += -2; 8 } 9 if(s.indexOf("IX") != -1) 10 { 11 ans += -2; 12 } 13 if(s.indexOf("XL") != -1) 14 { 15 ans += -20; 16 } 17 if(s.indexOf("XC") != -1) 18 { 19 ans += -20; 20 } 21 if(s.indexOf("CD") != -1) 22 { 23 ans += -200; 24 } 25 if(s.indexOf("CM") != -1) 26 { 27 ans += -200; 28 } 29 30 //逐字符处理 31 for(int i=0; i<s.length(); i++) 32 { 33 char c = s.charAt(i); 34 switch(c) 35 { 36 case 'I': 37 ans += 1; 38 break; 39 case 'V': 40 ans += 5; 41 break; 42 case 'X': 43 ans += 10; 44 break; 45 case 'L': 46 ans += 50; 47 break; 48 case 'C': 49 ans += 100; 50 break; 51 case 'D': 52 ans += 500; 53 break; 54 case 'M': 55 ans += 1000; 56 break; 57 } 58 } 59 return ans; 60 } 61 }