您的位置:首页 > 其它

leetcode_13_Roman to Integer

2017-11-06 10:30 399 查看


本题就是找到规律,根据几个字母的规律组成相对应的整数。

1. 找规律需要列出来大部分的项,然后认真比对找;

2.被减的因子只能是1,10或者100;

3.相减的项只有一次,就是只减一次,减去一个1,一个10,或者一个100;

4.只有特定的字符减去特定的字符,比如10和5去减1;50和100去减10;500和1000去减100.

根据以上的规律,控制的因素比较多,那么根据这些控制的因素就可以很容易的用代码表达出来。

int romanToInt(string s) {

int sum = 0;
int strSize = s.length();
int i=0;
while(i<strSize)
{
switch(s[i])
{
case 'M':sum += 1000; break;
case 'D':sum += 500;break;
case 'C':if(i+1<strSize&&(s[i+1] == 'D'||s[i+1] == 'M')) sum -= 100; else sum += 100;break;
case 'L':sum += 50;break;
case 'X':if(i+1<strSize&&(s[i+1] == 'L'||s[i+1] == 'C')) sum -= 10; else sum += 10;break;
case 'V':sum += 5;break;
case 'I':if(i+1<strSize&&(s[i+1] == 'V'||s[i+1] == 'X')) sum -= 1; else sum += 1;break;
}
i++;

}

return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: