解题思路
解题思路:①一次从字符串的末尾遍历到字符串的开头
②遍历的时候都拿当前的跟后面的作比较 1.大于后面的,则加上本次的值,在自增1
2.小于后面的值,加上后面的值减去当前的值,自增2
*需要注意的点:当输入的是一个字符的时候我们要另外加以考虑
用到的数据结构: Map双列集合
代码
import java.util.HashMap;
import java.util.Map;
/*
解题思路:①一次从字符串的末尾遍历到字符串的开头
②遍历的时候都拿当前的跟后面的作比较 1.大于后面的,则加上本次的值,在自增1
2.小于后面的值,加上后面的值减去当前的值,自增2
用到的数据结构:
*/
public class Solution {
public int romanToInt(String s) {
int sum=0;
Map m = new HashMap();
m.put('I',1);
m.put('V',5);
m.put('X',10);
m.put('L',50);
m.put('C',100);
m.put('D',500);
m.put('M',1000);
if(s.length()==1){
char[] chars = s.toCharArray();
return (int)m.get(chars[0]);
}
char[] chars = s.toCharArray();
for(int i = 0;i<chars.length-1;i++){
int o1 = (int)m.get(chars[i]);
int o2 = (int)m.get(chars[i+1]);
if(o1>=o2){
sum+=o1;
}else{
sum+=(o2-o1);
i++;
}
}
int o3 =(int) m.get(chars[chars.length - 2]);
int o4 =(int) m.get(chars[chars.length - 1]);
if(o3>=o4){
sum+=o4;
}
return sum;
}
}