本文主要是介绍[Leetcode] 13. Roman to integer 罗马数转换为整数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
与上一题相对应,方法不同,这里运用到了map的方法,从后往前开始加,前面的罗马字符比后面的字符小,那就减去这个小字符,大的话就加上这个字符,注意T[s[i]]的写法,s.back()是最后的字符,s.length-2是因为倒数倒数第二个和倒数第一个进行对比。
具体代码如下,击败40%,非常巧妙的方法,学习到了:
int romanToInt(string s)
{unordered_map<char, int> T = { { 'I' , 1 },{ 'V' , 5 },{ 'X' , 10 },{ 'L' , 50 },{ 'C' , 100 },{ 'D' , 500 },{ 'M' , 1000 } };int sum = T[s.back()];for (int i = s.length() - 2; i >= 0; --i) {if (T[s[i]] < T[s[i + 1]]){sum -= T[s[i]];}else{sum += T[s[i]];}}return sum;
}
这篇关于[Leetcode] 13. Roman to integer 罗马数转换为整数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!