CSDN话题挑战赛第2期
参赛话题:算法题解
题目链接与描述
https://leetcode.cn/problems/check-permutation-lcci/
关键词: 排序 hash表
判断是否互为字符重排,那么必然是长度相等,相同的字符相等;
基于这两个条件,可以用:
- 排序之后。对比字符串
- 记录对应字符的个数比较(官方的解有点面向答案解答了,字符不一定是字母,所以应该用hash表)
方法一:hash表
运行截图
代码
public boolean CheckPermutation(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
Map<Character, Integer> table = new HashMap<>();
for (int i = 0; i < s1.length(); i++) {
table.put(s1.charAt(i), table.getOrDefault(s1.charAt(i), 0) + 1);
}
for (int i = 0; i < s2.length(); i++) {
table.put(s2.charAt(i), table.getOrDefault(s2.charAt(i), 0) - 1);
if (table.getOrDefault(s2.charAt(i), 0) < 0) {
return false;
}
}
return true;
}
方法二:重排序
运行截图
代码
public boolean CheckPermutation(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
char[] str1 = s1.toCharArray();
char[] str2 = s2.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
结尾
欢迎评论区交流,每日打卡,冲冲冲!!!