[leetcode] 13. 罗马数字转整数
Posted ACBingo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] 13. 罗马数字转整数相关的知识,希望对你有一定的参考价值。
字符串处理,完全是上一个题倒过来,同样从大到小干就可以了
class Solution {
public:
int romanToInt(string s) {
int ans = 0;
int k = 0;
while (k < s.size() && s[k] == ‘M‘) {
ans += 1000;
k++;
}
if (k < s.size() && s[k] == ‘C‘ && s[k + 1] == ‘M‘) {
ans += 900;
k += 2;
}
if (k < s.size() && s[k] == ‘C‘ && s[k + 1] == ‘D‘) {
ans += 400;
k += 2;
}
if (k < s.size() && s[k] == ‘D‘) {
ans += 500;
k++;
}
while (k < s.size() && s[k] == ‘C‘) {
ans += 100;
k++;
}
if (k < s.size() && s[k] == ‘X‘ && s[k + 1] == ‘C‘) {
ans += 90;
k += 2;
}
if (k < s.size() && s[k] == ‘X‘ && s[k + 1] == ‘L‘) {
ans += 40;
k += 2;
}
if (k < s.size() && s[k] == ‘L‘) {
ans += 50;
k++;
}
while (k < s.size() && s[k] == ‘X‘) {
ans += 10;
k++;
}
if (k < s.size() && s[k] == ‘I‘ && s[k + 1] == ‘X‘) {
ans += 9;
k += 2;
}
if (k < s.size() && s[k] == ‘I‘ && s[k + 1] == ‘V‘) {
ans += 4;
k += 2;
}
if (k < s.size() && s[k] == ‘V‘) {
ans += 5;
k++;
}
while (k < s.size() && s[k] == ‘I‘) {
ans += 1;
k++;
}
return ans;
}
};
以上是关于[leetcode] 13. 罗马数字转整数的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 13 罗马数字转整数[找规律 多条件判断] HERODING的LeetCode之路
LeetCode 13. 罗马数字转整数 java 两种解法