题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
Java解法
- 存储有序不重复数据的办法:
if(set.add(c)){
list.add(c);
}
- strbuilder.insert(0,"...")在最前面添加字符串
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String key = in.nextLine();
String s = in.nextLine();
char[] key_c = key.toLowerCase().toCharArray();
//通过set消除Key中的重复字符
Set<Character> set = new HashSet();
List<Character> newAlphabet = new ArrayList<>();
for(char c:key_c) {
if(set.add(c)) {
newAlphabet.add(c);
}
}
//形成新字母表
for(int i=0;i<26;i++) {
char c = (char)(i+'a');
if(set.add(c)) {
newAlphabet.add(c);
}
}
//List<Character> newAlphabet_l = new ArrayList<Character>(newAlphabet);
//System.out.println(newAlphabet.toString());
StringBuilder strb = new StringBuilder();
for(int i=0;i<s.length();i++) {
char c = s.charAt(i);
if(c==' ') {
strb.append(" ");
}else if(c>='a' && c<='z') {
strb.append(newAlphabet.get(c-'a'));
}
else if(c>='A' && c<='Z') {
strb.append(Character.toUpperCase(newAlphabet.get(c-'A')));
}
}
System.out.println(strb.toString());
}
}