[アルゴリズム]文字列の検索:ファリンドロン、数値のみ抽出


2.ファリン症候群
📃 質問する
前と後の文字列をパリンドロンと呼ぶ.
文字列が入力されている場合、文字列が書き込みされている場合は、プログラムを作成し、YesまたはNoを出力します.
ただし、返信をチェックするときはアルファベットのみで返信をチェックし、大文字と小文字を区別しません.
▼▼私の草

  • 文字列を小文字または大文字に変換し、replace(正規表現)を使用してアルファベット以外の文字を削除します.
  • 1-1)[a-z]または[A-Z]は小文字/大文字のみを選択し、^記号はnotを表す.=>/[^a-z]は、aからzに属さない名前を選択したことを示す
  • 1−2)/gは選択者である.global=>適用可能なすべてを探します.使用しない場合は、1つだけ検索されます.
  • 1−3)iを共用して、iが大文字と小文字を区別しないことを示すこともできる./[^a-z]/giがこのように書くと、大文字と小文字を区別せず、すべての文字が出力されます.

  • 文字のみが残っている文字列を反転します.=>すべての文字列を接続するには、joinのパラメータを使用してスペースを設定する必要があります.join()のデフォルトの区切り文字が「」の場合、区切り文字列が表示されます.

  • stringがreverseと同じであることを確認し、同じであれば答えをYES、またはNOにします.
  • function solution(string){
        string = string.toLowerCase().replace(/[^a-z]/g,'');
        reverse = string.split('').reverse().join('')
        console.log(string,reverse);
        let answer = (string === reverse) ? 'YES' : 'NO'
        return answer
    }
    
    let string = 'found7, time: study; Yduts; emit, 7Dnuof'
    console.log(solution(string))
    3.数字のみ抽出
    📃 質問する
    文字列が指定され、アルファベットと数値が含まれている場合は、数値のみが抽出され、自然数が順番に作成されます.
    「tge 0 a 12 h 205 er」からのみ数値を抽出する場合は0、1、2、0、5、自然数を作成する場合は1205です.
    抽出によって作成された自然数は10000000を超えない.
    ▼▼私の草
  • 文字列では、正規表現を使用して数値以外の文字をスペースに置き換え、数値のみの文字列を生成します.=>replace(/[^0-9]/g,'')
  • 文字列を整数に変換します.ParseInt()を使用します.
  • function solution(string){
        let answer = Number(string.replace(/[^0-9]/g,''))
        return answer
    }
    
    let string1 = 'tge0a1h205er'
    let string2 = 'g0en2T0s8eSoft'
    console.log(solution(string2))
    ▼▼▼▼その他の方法
    エンコーディングインタビューでは、使用しない方法を制限する場合があります.この場合、使用できる方法は+isNaN()とfor文です.
  • isNan()という名前のメソッドを使用して、文字が数値であるかどうかを確認できます.Not a Numberの略語で、文字の場合はtrueを返します.
  • isnan結果がfalseの場合、答えに追加し、整数に変更します.時間的複雑度はO(n)である.
    function solution2(string){
        let answer = 0
        for(let x of string){
            if(!isNaN(x)) answer = answer * 10 + Number(x)
            /*answer 동작방식-0208 예시:
            answer*10
            -> 0을 만나면(answer가 0인 상태에서 *10)
                => +Number(x) => 0이면 0
            -> 2을 만나면 0(answer가 0인 상태에서 *10)
                => +Number(2) => 0+2 = 2
            -> 0을 만나면 20(answer가 2인 상태에서 *10)
                => +Number(0) => 20+0 = 20
            -> 8을 만나면 200(answer가 20인 상태에서 *10)
                => +Number(8) => 200+8 = 208
            */
        }
        return answer;
    }