[プログラマ]数字文字列とアルファベット語



function solution(s) {
   let num = {zero : "0", one: 1, two: 2, three: 3, four: 4, five: 5,
              six: 6, seven: 7, eight: 8, nine: 9}
   let word = ""
   let alpahbet = ""
   
   for(let i = 0; i < s.length; i++) {
       if(Number(s[i])) {
           word += s[i]
           continue;
       } else if(String(s[i])) {
           alpahbet += s[i]
           if(alpahbet === "0") {
               word += "0"
               alpahbet = ""
           }
       }
       
       if(num[alpahbet]) {
           word += num[alpahbet]
           alpahbet = ""
       }
   }
    
    return Number(word)
}
指定された文字列には、数値と文字で表される数値があります.
文字からなる数字はオブジェクトからなり、繰り返し文のループ中に数字であればword変数に直接割り当てられ、文字であればalpahbet変数に割り当てられます.
文字列がすべて整列されている場合、if(num[alpahber])オブジェクトは数値として受け入れられ、条件文は参照条件としてオブジェクトにproperty値を割り当てます.
この問題において、最大の鍵は0である.
0はif(num[alpahber])でfalse条件と判断され、また文字列"0"が宣言され、1000であれば要素が「000」に連続的に蓄積されるため、10万割り当ての問題でalpahbet = ""変数を空の文字列に変更する必要がある.

模範解答


function solution(s) {
    let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var answer = s;

    for(let i=0; i< numbers.length; i++) {
        let arr = answer.split(numbers[i]);
        answer = arr.join(i);
    }

    return Number(answer);
}