LeetCode OJ--Roman to Integer
http://oj.leetcode.com/problems/roman-to-integer/
罗马数字到自然数字的转换,先自己查相关的背景知识,然后分析清楚了。可以简化写,嗯嗯。“简化”,抓到本质。
#include <iostream> #include <map> #include <string> using namespace std; class Solution { public: int change(char ch) { int num = 0; switch(ch) { case 'I': num = 1; break; case 'V': num = 5; break; case 'X': num = 10; break; case 'L': num = 50; break; case 'C': num = 100; break; case 'D': num = 500; break; case 'M': num = 1000; } return num; } int romanToInt(string s) { int i = 0; int sum = 0; int num = 1; for(i = 0;i<s.size()-1;i++) { if(change(s[i])<change(s[i+1])) sum -= change(s[i]); else sum += change(s[i]); } sum += change(s[i]); return sum; } }; int main() { Solution myS; myS.romanToInt("DCXXI"); return 0; }