题解 | #字符串加密#

字符串加密

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        test36();
    }
    private static void test36() {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            // 获取密钥
            String str1 = in.nextLine();
            int[] n = new int[str1.length()];
            char[] c = str1.toCharArray();
            for (int i = 0; i < str1.length(); i++) {
                n[i] = 1;
                for (int j = 0; j < i; j++) {
                    if (c[i] == c[j]) {
                        n[i] += 1;
                    }
                }
            }
            // 去重之后的字母表
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < c.length; i++) {
                if (n[i] == 1) {
                    sb.append(c[i]);
                }
            }
            // 小写字母表
            char[] a = new char[26];
            for (int i = 0; i < a.length; i++) {
                a[i] = (char) ('a' + i);
            }

            for (int j = 0; j < a.length; j++) {
                // sb 去重复之后的,
                if (!sb.toString().toLowerCase().contains(String.valueOf(a[j]).toLowerCase())) {
                    sb.append(a[j]);
                }
            }
            String mw = sb.substring(0, 26);
            char[] mwChar = mw.toCharArray();
            // 获取明文
            StringBuilder result = new StringBuilder();
            String str2 = in.nextLine();
            char[] ch = str2.toCharArray();
            for (int i = 0; i < str2.length(); i++) {
                if (!"".equals(String.valueOf(ch[i]))) {
                    boolean xiao = Character.isLowerCase(ch[i]);
                    for (int j = 0; j < a.length; j++) {
                        if (Character.toLowerCase(ch[i]) == a[j]) {
                            if (xiao) {
                                // 小写
                                result.append(mwChar[j]);
                            } else {
                                // 小写
                                result.append(Character.toUpperCase(mwChar[j]));
                            }
                            break;
                        }
                    }
                } else {
                    result.append(ch[i]);
                }
            }
            System.out.println(result);
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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