將 1~3999 整數轉為羅馬數字。羅馬數字規則:I=1, V=5, X=10, L=50, C=100, D=500, M=1000。特殊組合:IV=4, IX=9, XL=40, XC=90, CD=400, CM=900。
建立值與符號對應表,按值從大到小貪心減去:
class Solution {
public:
string intToRoman(int num) {
vector vals = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
vector syms = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
string res;
for (int i = 0; i < 13; ++i) {
while (num >= vals[i]) {
num -= vals[i];
res += syms[i];
}
}
return res;
}
};
羅馬數字本質是「減法表示法」的貪心展開。包含 900,400,90,40,9,4 等特殊值可自動處理 IV, IX 等情況,無需複雜條件判斷。
O(1) 時間 (循環固定 13 次),O(1) 空間。