OJ練習問題:簡単なパスワード解読(JAVA大文字と小文字の変換)

5291 ワード

タイトル
パスワードは私たちの生活の中で非常に重要なもので、私たちのそんな少しも言えない秘密はすべてそれに頼っています.わあははは.次に淵子はパスワードの上にパスワードを追加しなければならない.簡単だが安全だ.もし淵子の元のBBSのパスワードがzvbo 941987だったとしたら、記憶を便利にするために、彼はアルゴリズムを通じてこのパスワードをYUANzi 1987に変換した.このパスワードは彼の名前と生年で、どのように忘れても忘れられないし、目立つ場所に堂々と置いて本当のパスワードを知られないことができる.彼はこのように変換して、みんなはすべて携帯電話の上のアルファベットを知っています:1–1、abc–2、def–3、ghi–4、jkl–5、mno–6、pqrs–7、tuv–8 wxyz–9、0–0、このように簡単で、淵子はパスワードの中で現れた小文字のアルファベットをすべて対応する数字に変えて、数字とその他の記号はすべて変換しないで、声明:パスワードの中にスペースがなくて、パスワードに出てくる大文字は小文字になってから1つ後ろに移動します.例えば、X、先に小文字になってから1つ後ろに移動します.yではありませんか.簡単でしょう.覚えておいて、zが後ろに移動するのはaですよ.
入力
YUANzi1987
しゅつりょく
zvbo941987
大意
大文字は小さくなって1位後ろに回転して、小文字は数字を回転して、数字は動かない
コード#コード#
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String s=new String();
        char c;
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            s=in.nextLine();
            char[] ch = s.toCharArray();
            for(int i=0;i<s.length();i++){
                if(ch[i]<'Z'&&ch[i]>='A'){
                    ch[i]+=1;
                    ch[i]=Character.toLowerCase(ch[i]);
                }
                else if(ch[i]=='Z'){
                    ch[i]='A';
                }
                else{
                    if(ch[i]>='a'&&ch[i]<='c'){
                        ch[i]='2';
                    }
                    if(ch[i]>='d'&&ch[i]<='f'){
                        ch[i]='3';
                    }
                    if(ch[i]>='g'&&ch[i]<='i'){
                        ch[i]='4';
                    }
                    if(ch[i]>='j'&&ch[i]<='l'){
                        ch[i]='5';
                    }
                    if(ch[i]>='m'&&ch[i]<='o'){
                        ch[i]='6';
                    }
                    if(ch[i]>='p'&&ch[i]<='s'){
                        ch[i]='7';
                    }
                    if(ch[i]>='t'&&ch[i]<='v'){
                        ch[i]='8';
                    }
                    if(ch[i]>='w'&&ch[i]<='z'){
                        ch[i]='9';
                    }
                }
            }
            System.out.println(ch);
        }
    }
}

記す
実はとても水の問題で、最初は文字の配列に変換しないで、直接
if(s.charAt(i)<'Z'&&s.charAt(i)>='A'){
        char c=s.charAt(i);
        c+=1;
    s=s.replace(s.charAt(i),Character.toLowerCase(c));
}

あとでは通用しませんが、replace法で前の大文字から小文字までを一括して数字に変えるので、配列を使うしかありません.