思路1:
当后面有个大的字符时候,前面这一段都是负,
用一个标记来记录这一段的正负,一段一段的相加。
public int romanToInt(String s) {
int result=0;
int resultPart=0;
int flag=1;
HashMap<Character,Integer> mp=new HashMap<Character,Integer>();
mp.put('I',1);
mp.put('V',5);
mp.put('X',10);
mp.put('L',50);
mp.put('C',100);
mp.put('D',500);
mp.put('M',1000);
int n=s.length();
for(int i=0;i<s.length();i++){
if(i+1<s.length()&&(mp.get(s.charAt(i))<mp.get(s.charAt(i+1)))){
flag=-1;
}
resultPart+=mp.get(s.charAt(i))*flag;
if(flag==-1||(i==s.length()-1)){
flag=1;
result+=resultPart;
resultPart=0;
}
}
return result;
}