【3】Longest Substring Without Repeating Characters (2019年1月22日,复习)
【5】Longest Palindromic Substring (2019年1月22日,复习)
【6】ZigZag Conversion (2019年1月22日,复习)
【8】String to Integer (atoi) (2019年1月22日,复习)
【10】Regular Expression Matching (2019年1月22日,复习)
【12】Integer to Roman (2019年1月22日,复习)
【13】Roman to Integer (2019年1月22日,复习)
罗马数字转换成整数。
题解:用一个map来存储映射关系。
1 class Solution { 2 public: 3 int romanToInt(string s) { 4 const int n = s.size(); 5 initMap(); 6 int idx = 0; 7 int ret = 0; 8 while (idx < n) { 9 if (idx + 1 == n) { 10 string temp = string(1, s[idx]); 11 ret += mp[temp]; 12 idx++; 13 continue; 14 } 15 string str = s.substr(idx, 2); 16 if (mp.find(str) != mp.end()) { 17 ret += mp[str]; 18 idx += 2; 19 } else { 20 string temp = string(1, s[idx]); 21 ret += mp[temp]; 22 idx++; 23 } 24 } 25 return ret; 26 } 27 unordered_map<string, int> mp; 28 void initMap() { 29 mp["IV"] = 4, mp["IX"] = 9; 30 mp["XL"] = 40, mp["XC"] = 90; 31 mp["CD"] = 400, mp["CM"] = 900; 32 mp["I"] = 1, mp["V"] = 5, mp["X"] = 10, 33 mp["L"] = 50, mp["C"] = 100, mp["D"] = 500, 34 mp["M"] = 1000; 35 } 36 };