题解 | 字符串加密
解题思路:
- 采用List数组的方式,使用constains方法以及其有序性
- 三步解决:
- 使用list将字符串str1按顺序添加到list中,同时删除重复字符
- 查找26个小写字母在list中不存在的,将其按顺序添加到list中
- a-z默认有序,通过减去'a'确定对应在list中的索引
import java.util.ArrayList; import java.util.List; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str1 = in.next(); String str2 = in.next(); char[] charArr = str1.toCharArray(); List<Character> newLetterList = new ArrayList<>(); // 先将字符串中的字符按顺序放入list中并去除其中重复字符 for (int i = 0; i < charArr.length; i++) { char c = charArr[i]; if (!newLetterList.contains(c)) { newLetterList.add(c); } } // 遍历a-z,list中不包含的字符,添加到list中 for (char c = 'a'; c <= 'z'; c += 1) { if (!newLetterList.contains(c)) { newLetterList.add(c); } } // 利用其ascii字符的有序性和a-z字符可以转化为数字的特性 char[] charArr2 = str2.toCharArray(); for (int i = 0; i < charArr2.length; i++) { charArr2[i] = newLetterList.get(charArr2[i] - 'a'); } System.out.println(new String(charArr2)); } }