Algorithm|文字列基本


プログラマLv 1

問題の説明


文字列sの長さが4または6であり、数値のみからなる関数であることを確認し、解を完了してください.たとえば、sがa 234であればFalse、1234であればTrueを返します.

せいげんじょうけん


sは、長さが1より大きく、長さが8より小さい文字列である.

I/O例


sreturn"a234"false"1234"true

初めての試み

function solution(s) {
    for(let i = 0; i < s.length; i++){
      let stringToInt = s.charAt(i)*1;
      if(isNaN(stringToInt)){
        return false;
      }
    }
    return true;
}


質問です.
:問題を見逃してみる
問題は...文字列sの長さが4または6であり、数値のみからなる関数.
一つの条件も見ないで...!!4,6を区別する機能は入っていません.
質問です.
:入ってきたs自体をチェックできるのに、どうしてドアを回さなければならないのですか.
また不要な演算を行います.

二次試行

function solution(s) {
    if((s.length === 4 || s.length === 6 ) && !isNaN(s)){
        return true;
    }
    return false;
}

!??!??!?! どうして!?!
上記のように解いて11回のテストケースを発見しました
小数点表現「0.01」や「1 e 22」などの指数表現の問題が発生する可能性があります.
ソース|「プログラマ」文字列の基本情報の処理

📌最終結果

function solution(s) {
    if( s.length === 4 || s.length === 6){
        return s.split("").every((char)=>!isNaN(char))
    }
    return false;
}

- Array.every()


arr.every( callback [, thisArg] )
パラメータ

  • callback
    各要素の関数をテストします.次の3つのパラメータを使用します.
  • currentValue
    :処理する現在の要素.
  • index ( Optional )
    :処理する現在の要素のインデックス.
  • array ( Optional )
    :eachの配列を呼び出します.
  • thisArg ( Optional )
    :callbackを実行するときに使用する値.

  • 戻り値
    すべての配列要素に対して真の値を返す場合はtrue、それ以外はfalseです.
  • 他の解答には正規表現で解くコードがたくさんあります!正規表現も必ず3月中に勉強!