标签:
题目:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解题思路:
上一篇已经介绍过罗马数字的组成和计算方式,所以将罗马数字转换成整数还是比较容易的。
之前我想到的方法就是从左到右一直判断字符以及对1,10,100是需要做减法还是其他,但是看到一个从右至左计算的方法,要简洁很多。
从右至左计算时,遇到1,10,100时只需判断当前数字是否不小于5,50,500即可。
C#代码:
public class Solution { public int RomanToInt(string s) { int result = 0; for (int i = s.Length-1 ; i >=0; i--) { switch (s[i]) { case ‘I‘: result += (result >= 5) ? -1 : 1; break; case ‘V‘: result += 5; break; case ‘X‘: result += (result >= 50) ? -10 : 10; break; case ‘L‘: result += 50; break; case ‘C‘: result += (result >= 500) ? -100 : 100; break; case ‘D‘: result += 500; break; case ‘M‘: result += 1000; break; default: return 0; } } return result; } }
LeetCode - 13. Roman to Integer
标签:
原文地址:http://www.cnblogs.com/xquancnblogs/p/5144480.html