import java.util.*;classSolution{publicintromanToInt(String s){int sum =0;int preNum =getValue(s.charAt(0));for(int i =1;i < s.length(); i ++){int num =getValue(s.charAt(i));if(preNum < num){
sum -= preNum;}else{
sum += preNum;}
preNum = num;}
sum += preNum;return sum;}privateintgetValue(char ch){switch(ch){case'I':return1;case'V':return5;case'X':return10;case'L':return50;case'C':return100;case'D':return500;case'M':return1000;default:return0;}}}
作者:donespeak
链接:https://leetcode-cn.com/problems/roman-to-integer/solution/yong-shi-9993nei-cun-9873jian-dan-jie-fa-by-donesp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法三:哈希表
classSolution{publicintromanToInt(String s){
Map<String, Integer> map =newHashMap<>();
map.put("I",1);
map.put("IV",4);
map.put("V",5);
map.put("IX",9);
map.put("X",10);
map.put("XL",40);
map.put("L",50);
map.put("XC",90);
map.put("C",100);
map.put("CD",400);
map.put("D",500);
map.put("CM",900);
map.put("M",1000);int ans =0;for(int i =0;i < s.length();){if(i +1< s.length()&& map.containsKey(s.substring(i, i+2))){
ans += map.get(s.substring(i, i+2));
i +=2;}else{
ans += map.get(s.substring(i, i+1));
i ++;}}return ans;}}
作者:guanpengchn
链接:https://leetcode-cn.com/problems/roman-to-integer/solution/hua-jie-suan-fa-13-luo-ma-shu-zi-zhuan-zheng-shu-b/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
LeetCode第13题:罗马数字转整数题目:给定一个罗马数字,将其转换成整数。解法一:就是固执的想用昨天学到的方法。还有一点要注意,涉及到字符串不能用“==”判断,它比较的是地址。class Solution { public int romanToInt(String s) { if(s=="") return 0; int ans=0,j=...