1.题目:https://leetcode-cn.com/problems/roman-to-integer/
2.思路
(1)每次要判断当前的值和下面的一个值谁大谁小,这样就考虑到了题目要求的位置问题了,这里每次加的值:只有当前的值,所以是一个一个累加的(负数也可看成加正数嘛),所以最后的代码把最后剩下的值加起来了
(2)
首先存储字符和对应值,每次循环只负责本次当前值的操作
找到当前字符对应的值,再找下一个字符对应的值,
如果 当前字符值大于下一字符值,加上当前字符值
如果 当前字符值小于下一字符值,减去当前字符值
处理最后一个字符
3.代码
https://leetcode-cn.com/problems/roman-to-integer/solution/12ms-82mb-c-by-macrecry/
class Solution {
public:
int romanToInt(string s) {
char s1[]={'I','V','X','L','C','D','M'};
int s2[]={1,5,10,50,100,500,1000};
int length=s.length();
int res=0;
int i=0;
while ( i {
int slow=0;
int fast=0;
while (s[i]!=s1[slow])
slow++;
while (s[i+1]!=s1[fast])
fast++;
if (slow res=res-s2[slow];
else
res=res+s2[slow];
i++;
}
int slow=0;
while (s[s.size()-1]!=s1[slow])
slow++;
res=res+s2[slow];
return res;
}
};
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net