利用優先權,從羅馬數字轉成十進位數字
//判斷羅馬數字的優先權
int rmPriority(char word){
int result;
switch (word){
case 'I':
result = 1;
break;
case 'V':
result = 2;
break;
case 'X':
result = 3;
break;
case 'L':
result = 4;
break;
case 'C':
result = 5;
break;
case 'D':
result = 6;
break;
case 'M':
result = 7;
break;
}
return result;
}
利用字串讀入,再從0 ~ string.length()-1依序做判斷、累加。
第一種情況:優先權較大 XI = 10 + 1 = 11
第二種情況:優先權一樣 III = 1 + 1 + 1 = 3
第三種情況:優先權較小 IX = -1 + 10 = 9
利用迴圈,不斷減可以分到的字母,必須列出所有可能。
int kind[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
string kindWord[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
int index = 0;//索引
string answer = "";//答案
while(數字 > 0){
while(數字 > kind[索引]){
數字減少
答案字串增加字元
}
索引++
}
最後回傳 return answer即為答案
AC (0ms, 288KB)
https://pastebin.com/vEn8Fk07