13. Roman to Integer

解题思路:

1)将所有字母转化为对应的数值;

2)如果字符串长度等于1,直接输出这一个字母对应的数值;如果大于1,则比较前后两个字母对应数值的大小,如果前面小于后面,则后面的减去前面在叠加到总和上,反之将前面的数值直接叠加到总和。

class Solution {
public:
int romanToInt(string s) {
int *nums=new int[s.length()];
for (int i=0;i<s.length();i++){
switch(s[i]){
case 'M':
nums[i]=1000;
break;
case'D':
nums[i]=500;
break;
case'C':
nums[i]=100;
break;
case'L':
nums[i]=50;
break;
case'X':
nums[i]=10;
break;
case'V':
nums[i]=5;
break;
case'I':
nums[i]=1;
break;


}
}
int sum=0;
if(s.length()>1){
for(int i=0;i<(s.length()-1);i++){
if(nums[i]<nums[i+1]){
sum=sum+(nums[i+1]-nums[i]) ;
i++;
}
else
sum=sum+nums[i];
if(i==(s.length()-2))
sum=sum+nums[i+1];
}
}
else
sum =sum+ nums[0];

return sum;
}
};

posted @ 2018-05-31 11:20  ssml  阅读(113)  评论(0编辑  收藏  举报