题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String key = in.nextLine(); String req = in.nextLine(); // 进行对象加密 createPrivateKey(key,req); // System.out.println(a + b); } } public static void createPrivateKey(String key,String req) { String letters = "abcdefghijklmnopqrstuvwxyz"; // 先对密码进行去重处理 StringBuilder sb =new StringBuilder(); // 生成新的密钥 for (char c :key.toCharArray()) { String charStr = String.valueOf(c); if (!sb.toString().contains(charStr)) { sb.append(charStr); letters=letters.replace(charStr,""); } } sb.append(letters); for (char c :req.toCharArray()) { // 找到下角标 int index =c-97; System.out.print(sb.charAt(index)); } } }
遍历密钥key时,去重的同时把有序字母找到的密钥key删除可以只用一层循环即可。append组成新的密钥。
小写字母的角标在字母表中的下角标=字符-97.如a的角标int值为97,减去97=0,b的值减去97=1.
根据有序角标直接去排序好的新密钥字符串查询对应角标值就行。