今天就來講講第13題
題目要求將整數 (num) 轉換成羅馬數字表示,並給定羅馬數字轉換表。
建立羅馬字符對應表:
unordered_map
來儲存羅馬字符及其對應的整數值,如 'I' -> 1
, 'V' -> 5
, 'X' -> 10
等。初始化結果變數:
count
來儲存最終結果,初始值為 0。遍歷羅馬數字字串:
s
,逐一處理每個字符。檢查減法規則:
返回結果:
count
,即對應的整數值。class Solution {
public:
int romanToInt(string s) {
unordered_map<char, int> roman{{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}};
int count = 0;
for (int i = 0; i < s.size(); ++i) {
// 如果當前數值比下個字符數值小,則要執行減法
if (i < s.size() - 1 && roman[s[i]] < roman[s[i + 1]]) {
count -= roman[s[i]];
} else {
count += roman[s[i]];
}
}
return count;
}
};
建立羅馬字符對應表:
unordered_map
來儲存羅馬字符及其對應的整數值,如 'I' -> 1
, 'V' -> 5
, 'X' -> 10
等。初始化結果變數:
count
來儲存最終結果,初始值為 0。遍歷羅馬數字字串:
s
,逐一處理每個字符。檢查減法規則:
返回結果:
count
,即對應的整數值。