题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3?tpId=37&tqId=21259&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
使用set去重
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { private static HashSet<String> oldAlphabet = new LinkedHashSet<String>(); private static HashSet<String> newAlphabet = new LinkedHashSet<String>(); static { int charTemp = 'a'; for (int i = 1; i <= 26; i++) { oldAlphabet.add((char)charTemp + ""); charTemp++; } } public static void main(String[] args) { Scanner in = new Scanner(System.in); String key = in.nextLine(); String Plaintext = in.nextLine(); HashSet<String> strSet = new LinkedHashSet<String>(); HashMap<String,String> map = new HashMap<String,String>(); String result = ""; //去重放入Set中 for (int i = 0; i < key.length(); i++) { strSet.add(key.charAt(i) + ""); } //开始创造新字母表 for (String zimu : strSet) { newAlphabet.add(zimu); oldAlphabet.remove(zimu); } for (String zimu : oldAlphabet) { newAlphabet.add(zimu); } //形成映射关系 int charTemp = 'a'; for (String zimu : newAlphabet) { map.put((char)charTemp+"", zimu); charTemp++; } //创建、输出result for (int i = 0; i < Plaintext.length(); i++) { result += map.get(Plaintext.charAt(i) + ""); } System.out.print(result); } }