leetcode13. Roman to Integer
思路:
1.从最大的位开始,依次解析罗马数;
class Solution {
public:
int romanToInt(string s) {
map<string,int> convertSet;
convertSet["I"] = 1;
convertSet["V"] = 5;
convertSet["X"] = 10;
convertSet["L"] = 50;
convertSet["C"] = 100;
convertSet["D"] = 500;
convertSet["M"] = 1000;
convertSet["IV"] = 4;
convertSet["IX"] = 9;
convertSet["XL"] = 40;
convertSet["XC"] = 90;
convertSet["CD"] = 400;
convertSet["CM"] = 900;
string presents[13] = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
int step = 12;
int result = 0;
int cursor=0;
while(step>=0){
while(s.find(presents[step],cursor)==cursor && cursor<s.size()){
result += convertSet[presents[step]];
cursor += presents[step].size();
}
step--;
}
if(cursor<s.size()) return 0;
return result;
}
};