[CodeKata]Day5. ローマ数字から数字に変換
質問する
ローマ字から数字に変換
パラメータとして1~3999のアルファベットsを使用する場合は、対応する数値を返します.
ローマ数字を数字としてマークします.
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
ローマ字を数字で読む方法は、左からローマ字を順番に付けます.III = 3
XII = 12
XXVII = 27
.
しかし表現4の場合はIIIではなくIV
後ろの数字から前の数字を引けばいいです
9はIXです.
VとXの前に来て、4、9
XはLとCの前40,90に来る
CはD,Mの前に来て,400,900
クレヨンしんちゃん
結果
function romanToNum(s) {
const str = s;
const t = {
"I" : 1
,"V" : 5
,"X" : 10
,"L" : 50
,"C" : 100
,"D" : 500
,"M" : 1000
}
let sum =0;
let i = 0
while (i<str.length){
console.log(i);
if( t[str[i+1]] > t[str[i]]){
sum += t[str[i+1]]-t[str[i]];
i++
}else{
sum += t[str[i]];
}
i++
}
return sum;
}
console.log(romanToNum("MCMXCIV"));
学識一度は成功できず、最初はforゲートを1つずつ回し、後に小数が出てくるとその瞬間にリターンインしなければなりませんが、「MCMXCIV」の値が入ってくると満足できません.リセットして、ビット数の移動に焦点を当てます!考えました.
//잘못 굴린 짱구
function romanToNum(s) {
let sum =0;
for (let i in str){
let index = parseInt(i);
if( t[str[index+1]] && t[str[index+1]] > t[str[index]]){
console.log(index,str[index], t[str[index]], t[str[index+1]]);
sum+= t[str[index+1]]-t[str[index]];
if(!t[str[index+2]]) {
return sum;
}
}else{
sum += t[str[index]];
}
}
return sum;
}
console.log(romanToNum("MCMXCIV"));
Reference
この問題について([CodeKata]Day5. ローマ数字から数字に変換), 我々は、より多くの情報をここで見つけました https://velog.io/@realsong/CodeKataDay5.-로마숫자에서-숫자로-바꾸기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol