Code CataDay 6
835 ワード
function romanToNum(s) {
const obj= {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000};
let sum = obj[s[s.length-1]];
for (let i=s.length-1; i>0; i--) {
if (obj[s[i]] > obj[s[i-1]]) {
sum -= obj[s[i-1]];
}
else {
sum += obj[s[i-1]];
}
}
return sum ;
}
アルファベットを数字で読み取る方法では、デフォルトでは左の値が小さい場合、後ろの数字から前の数字を減算します.上記の条件の下で、すべての字を1つずつ比較する必要があると思います.
なお、前が後より小さいのは後が前より大きいと解釈できる.
(これは、値を算出する際に、次の数を加算するのではなく、前の数を負数として扱うため、後の値から前の数を減算するのが簡単である)
変数を最後の変数として指定し、後のインデックスからループを開始します.
for (let i=s.length-1; i>0; i--) {
if (obj[s[i]] > obj[s[i-1]]) {
sum -= obj[s[i-1]];
}
else {
sum += obj[s[i-1]];
}
}
Reference
この問題について(Code CataDay 6), 我々は、より多くの情報をここで見つけました https://velog.io/@soojjung/코드카타-Day6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol