题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
- 利用set去重但不存到set中而是存在list保留原始顺序
/**
* 字符串加密
*/
public class test88 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String key = sc.next();
String str = sc.next();
char[] chars = key.toCharArray();
char[] chars2 = str.toCharArray();
HashSet<Character> set = new HashSet<>();
ArrayList<Character> list = new ArrayList<>();
// 1. 先利用set 进行去重,将不重复的数据插入到list中
for (int i = 0; i < chars.length; i++) {
if(set.add(chars[i])){
list.add(chars[i]);
}
}
// 将 a-z中不在 key中出现的放到list去
// 变为新的字母表
for (int i = 97; i <= 122; i++) {
if(!set.contains(Character.valueOf((char)(i)))){
list.add(Character.valueOf((char)(i)));
}
}
// 打印新字母表中对应 加密数据的位置 的字符
for (int i = 0; i < chars2.length; i++) {
System.out.print(list.get(chars2[i] - 97));
}
}
}
}