分享一个解题方式
当我们在处理一些两个字符串是否相互包含的问题时,使用暴力枚举过于低效,而使用map又太重了(消耗的空间太大,还需要维护),此时我们就可以使用这种比较便捷的方式,创建一个长度为26的数组记录字符串的各字符的出现次数。
举一个例子:
以力扣242题为例
链接
判断两个字符串中的出现的字符个数是否相同,我们就可以使用这个方法来解决这个问题
首先我们创建这样一个数组,遍历第一个字符串,将第一个字符串中的各字符个数记录在数组中,然后我们只需要遍历第二个字符串,也记录他各个字符的出现次数即可完成此题,这样的方式可以让解题更加的简单
代码
class Solution {
public boolean isAnagram(String s, String t) {
//记录每个字母的出现次数
int []record = new int[26];
// 遍历字符串s 统计s中各字符的出现次数
for (char c : s.toCharArray()){
record[c-'a'] +=1;
}
// 遍历字符串t 统计t中个字符的出现次数
for (char c : t.toCharArray()) {
record[c-'a'] -= 1;
}
for (int i:record) {
if (i!=0) {
return false;
}
}
return true;
}
}



