这题没想清楚,,,
好好穷举啊,我的哥,总能枚举完
比较蠢的写法,再说
/*
顺序,从后往前,I V X L C D M 如果逆序就减去,
后一位小于等于它本身就是+,否则是-
要用栈?
*/
class Solution {
public:
int romanToInt(string s) {
int len=s.length();
int sum=0,val=0;
for(auto i=0;i<len;i++)
{
//printf("%c\n",s[i]);
switch(s[i]){
case 'I':
val= s[i+1]=='I'||s[i+1]=='\0' ? 1 : -1;
break;
case 'V':
val=s[i+1]=='V'||s[i+1]=='I'|| s[i+1]=='\0' ? 5 : -5;
break;
case 'X':
val=s[i+1]=='X'||s[i+1]=='V'||s[i+1]=='I'|| s[i+1]=='\0' ? 10 : -10;
break;
case 'L':
val=s[i+1]=='L'|| s[i+1]=='X'||s[i+1]=='V'||s[i+1]=='I'|| s[i+1]=='\0' ? 50 : -50;
break;
case 'C':
val=s[i+1]=='C'||s[i+1]=='L'|| s[i+1]=='X'||s[i+1]=='V'||s[i+1]=='I'|| s[i+1]=='\0' ? 100 : -100;
break;
case 'D':
val= s[i+1]=='D'|| s[i+1]=='C'||s[i+1]=='L'|| s[i+1]=='X'||s[i+1]=='V'||s[i+1]=='I'|| s[i+1]=='\0' ? 500 : -500;
break;
case 'M':
val=1000;
break;
}
sum+=val;
printf("sum:%d\n",sum);
}
return sum;
}
};
ac了就行