有了12题的基础,这一题确实是easy了
就是一定要注意不要越界
每一次都要判断i是否小于s.length()
class Solution {
public int romanToInt(String s) {
int i=0;
int thousands=0;
int hundreds=0;
int tens=0;
int ones=0;
char []num=s.toCharArray();
while(i<s.length()&&s.charAt(i)=='M'){
thousands++;
i++;
}
if(i<s.length()){
if(s.charAt(i)=='C'||s.charAt(i)=='D'){
int j=i+1;
if(j<s.length()&&s.charAt(j)=='M'){
hundreds=9;
i+=2;
}
else if(j<s.length()&&s.charAt(j)=='D'){
hundreds=4;
i+=2;
}
else{
if(s.charAt(i)=='D'){
hundreds=5;
i++;
}
while(i<s.length()&&s.charAt(i)=='C'){
hundreds+=1;
i++;
}
}
}
}
if(i<s.length()){
if(s.charAt(i)=='X'||s.charAt(i)=='L'){
int j=i+1;
if(j<s.length()&&s.charAt(j)=='C'){
tens=9;
i+=2;
}
else if(j<s.length()&&s.charAt(j)=='L'){
tens=4;
i+=2;
}
else{
if(s.charAt(i)=='L'){
tens=5;
i++;
}
while(i<s.length()&&s.charAt(i)=='X'){
tens+=1;
i++;
}
}
}
}
if(i<s.length()){
if(s.charAt(i)=='I'||s.charAt(i)=='V'){
int j=i+1;
if(j<s.length()&&s.charAt(j)=='X'){
ones=9;
i+=2;
}
else if(j<s.length()&&s.charAt(j)=='V'){
ones=4;
i+=2;
}
else{
if(s.charAt(i)=='V'){
ones=5;
i++;
}
while(i<s.length()&&s.charAt(i)=='I'){
ones+=1;
i++;
}
}
}
}
return 1000*thousands+100*hundreds+10*tens+ones;
}
}