LeetCode Roman to Integer

LeetCode Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.


这一题是LeetCode Integer to Roman的姊妹篇,只需从左往右依次解析字符串即可,优雅版本如下:

class Solution {
public:
	int romanToInt(string s) {
		vector<int> nums = { 1,4,5,9,10,40,50,90,100,400,500,900,1000 };
		vector<string> symbol = { "I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M" };
		int ans = 0;
		for (int i = nums.size() - 1; i >= 0; i--) {
			int sz = symbol[i].size();
			while (s.size() >= sz&&s.substr(0, sz) == symbol[i]){
				ans += nums[i];
				s = s.substr(sz);
			}
		}
		return ans;
	}
};

本代码提交AC,用时68MS。

Leave a Reply

Your email address will not be published. Required fields are marked *