プログラマ[レベル1]起動パスワード


質問する


1つの暗号化方法は、1つの文の各アルファベットを一定の距離で伸ばし、別のアルファベットに変換することです.例えば、「AB」は1で「BC」、3で「DE」を表す.「z」が1に等しいと「a」になります.文字列sと距離nを入力し、sがnの暗号文の関数を生成し、ソリューションを完了します.

せいげんじょうけん

  • スペースはいくら押しても空いています.
  • sには、小文字、大文字、スペースのみが含まれます.
  • sの長さは8000未満です.
  • nは1以上25以下の自然数です.
  • I/O例



    に答える

    function solution(str, n) {
        const upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        const lower = 'abcdefghijklmnopqrstuvwxyz';
        let answer = '';
        for(let s of str){
            if(s ===" "){
                answer += " ";
                continue;
            }
            const upperOrLower = upper.includes(s) ? upper : lower;
            let index = upperOrLower.indexOf(s) + n;
            if(index >= upperOrLower.length){
                index -= upperOrLower.length;
            }
            answer += upperOrLower[index];
        }
        return answer;
            
    }
    私が試した方法は間違っていた.
    charcodeatを使わない良い方法upperOrLower変数にはupperまたはlower(上の文字列)が含まれており、その解題方法は非常に斬新です.覚えておきましょう.

    オリジナルコード

    function solution(str, n) {
        let arr = str.split("")
        let answer = '';
        for(let s of arr){
            if(s ===" "){
                answer += " ";
                continue;
            }
            if(s.toUpperCase().charCodeAt() >= 90){
                answer += String.fromCharCode(s.charCodeAt() + n -26)
            } else {
                answer += String.fromCharCode(s.charCodeAt() + n)
            }
            
        }
        return answer;
            
    }
    テストの結果はすべて正しいですが、提出してから採点しにくいです.原因はまだ見つかっていない.