题解 | #字符串加密#
字符串加密
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)));
}
}
}
}
}
查看4道真题和解析