个人认为这样子易理解一点

字符串加密

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

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String key = sc.next();
        String data = sc.next();
        LinkedHashSet<Character> linkedHashSet = new LinkedHashSet<>(26);
        for (char c : key.toCharArray()) {
            // 使用set集合去重
            linkedHashSet.add(c);
        }
        ArrayList<Character> list = new ArrayList<>(linkedHashSet);
        // 将剩下的字母进行追加
        for (int i = (int) 'A'; i <= (int) 'Z'; i++) {
            if (!list.contains((char) i)
                    && !list.contains(Character.toLowerCase((char) i))) {
                // 大小写都未出现,追加
                list.add((char) i);
            }
        }

        StringBuilder builder = new StringBuilder(data.length());
        for (char c : data.toCharArray()) {
            if (c >= 'A' && c <= 'Z'){
                // 找到该字符对应的26位字母表的索引,我们生成新的字母表与原有a~z字母表是对应的
                int index = c - 65;
                // 注意大小写与原有的一致
                builder.append(Character.toUpperCase(list.get(index)));
            }
            if (c >= 'a' && c <= 'z'){
                int index = c - 97;
                builder.append(Character.toLowerCase(list.get(index)));
            }
        }

        System.out.println(builder);
    }
}

全部评论

相关推荐

昨天 12:25
重庆大学 C++
到底要什么样的学历才配进呢
投递速腾聚创等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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