题解 | #字符串加密#

字符串加密

https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

这个题的关键是使用LinkedHashSet保证字符的放入是有序的,否则取出来的字符乱序会导致字典不对应。

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String key = in.nextLine();
        String text = in.nextLine();
        StringBuilder sb = new StringBuilder();
        StringBuilder hsLow = new StringBuilder();
        Set<Character> hs = new LinkedHashSet<Character>();
        String oldTemp = "abcdefghijklmnopqrstuvwxyz";
        String newTemp = "abcdefghijklmnopqrstuvwxyz";
        for(int i=0; i<key.length();i++){
            hs.add(key.charAt(i));
            newTemp = newTemp.replaceAll(key.toLowerCase().charAt(i)+"","");
        }
        for(char c : hs){
            hsLow.append(Character.toLowerCase(c));
        }
        // System.out.println(hsLow);
        newTemp = hsLow.toString()+newTemp;
        // System.out.println(newTemp);
        for(int i=0; i<text.length(); i++){
            if(text.charAt(i) == ' '){
                System.out.print(" ");
            }else{
                int no = oldTemp.indexOf(Character.toLowerCase(text.charAt(i)));
                //System.out.println(no);
                if(Character.isLowerCase(text.charAt(i))){
                    System.out.print(newTemp.charAt(no));
                }else{
                    System.out.print(Character.toUpperCase(newTemp.charAt(no)));
            }
            }
            
        }
    }
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务