leetcode 13罗马数字转整数
程序员文章站
2022-03-01 17:05:32
...
解题思路:使用Map集合把题目规则记录在集合里,遍历字符串,获取当前和后一个字符,通过键值对获取他们所对应的值。如果前面的小后面的大,则做减法,与sum相加,i++(因为两个字符都进行了计算),如果前面的大后面的小,则把当前字符所对应的值加到sum中。最后返回sum。
class Solution {
public int romanToInt(String s) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("I", 1);
map.put("V", 5);
map.put("X", 10);
map.put("L", 50);
map.put("C", 100);
map.put("D", 500);
map.put("M", 1000);
int sum = 0;
for (int i = 0; i < s.length(); i++) {
String nowCh = s.charAt(i) + "";
if ((i + 1) == s.length()) {
sum += map.get(nowCh);
} else {
String nextCh = s.charAt(i + 1) + "";
if (map.get(nowCh) < map.get(nextCh)) {
sum += (map.get(nextCh) - map.get(nowCh));
i++;
} else {
sum += map.get(nowCh);
}
}
}
return sum;
}
}
上一篇: Nginx配置中FastCGI的几个命令
下一篇: 关于“XX 附近有语法错误!”