题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
形成密钥过程如下:
输入Key去重——>在Key末尾按顺序加上字母表内非Key的字母——>形成密钥;
加密过程如下:
在字母表内找到需要加密的明文中所有字母所对应的下标——>在按明文的顺序依次在密钥中找到对应下标的字符——>按序输出得到答案。
代码如下(代码应用到了Set接口的无重复性特性进行秒的形成,有用List的可重复性进行密文的形成输出):
import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str="abcdefghijklmnopqrstuvwxyz";
String str1=sc.nextLine(); //形成密钥。
str1=str1.toLowerCase(Locale.ROOT);
LinkedHashSet<Character> list=new LinkedHashSet<>();
for (int i=0;i<str1.length();i++){
list.add(str1.charAt(i));
}
for (int i=0;i<str.length();i++){
list.add(str.charAt(i));
}
String s=new String();
for (Character character : list) {
s=s+character;
}
ArrayList<Character> list1=new ArrayList<>(); //形成密文。
String str2=sc.nextLine();
str2=str2.toLowerCase(Locale.ROOT);
for (int i=0;i<str2.length();i++){
for (int j=0;j<str.length();j++){
if(str2.charAt(i)==str.charAt(j)){
list1.add(s.charAt(j));
}
}
}
for (Character character : list1) {
System.out.print(character);
}
}
}