シーザーのパスワード


🔗 質問リンク


https://programmers.co.kr/learn/courses/30/lessons/12926

問題の説明


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

⚠▼制限


  • いくら押してもスペースは空いています.

  • sは、小文字、大文字、スペースのみから構成されます.

  • sの長さは8000以下です.

  • nは1以上,25以下の自然数である.
  • 💡 プール(言語:JavaとPython)


    Java

    class Solution {
        public String solution(String s, int n) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s.length(); i++) {
                char ch = s.charAt(i);
                int charNum = ch + n;
                if (Character.isUpperCase(ch))
                    sb.append((char) ((charNum > 90) ? (charNum % 90 - 1) + 'A' : charNum));
                else if (Character.isLowerCase(ch))
                    sb.append((char) ((charNum > 122) ? (charNum % 122 - 1) + 'a' : charNum));
                else
                    sb.append(ch);
            }
            return sb.toString();
        }
    }

    Python

    def solution(s, n):
        
        up_alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 
        'W', 'X', 'Y', 'Z']
    
        low_alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
        'w', 'x', 'y', 'z']
    
        answer = ''
        for alpha in s:
            if alpha.isupper():
                for i in range(len(up_alpha)):
                    if up_alpha[i] == alpha:
                       answer += up_alpha[(i+n) % len(up_alpha)]
            elif alpha.islower():
                for i in range(len(low_alpha)):
                    if low_alpha[i] == alpha:
                        answer += low_alpha[(i+n) % len(low_alpha)]
            else:
                answer += alpha
                
        return answer