438找到字符串中所有的字母异位词
- 开源代码
- 2025-09-07 12:45:02

滑动窗口 卡住短的数组 向长的数组进行比较 出现字符次数相同的就是一组异位词、
class Solution {
public List<Integer> findAnagrams(String s, String p) {
//存储结果
List<Integer> result = new ArrayList<>();
//charP存储p中字母出现的个数
int [] charP = new int[26];
//charS存储存在p.length中p异味词的次数
int [] charS = new int[26];
//先统计p中出现的词的个数
for (int c : p.toCharArray()) {
charP[c - 'a']++;
}
//右端点进入字符数组s
for (int right = 0; right < s.length(); right++) {
charS[s.charAt(right) - 'a']++;
//计算左窗口的位置
int left= right - p.length() + 1;
//窗口大小小于0的话 继续遍历
if (left<0){
continue;
}
//如果两个字符数组字符出现的次数相同
if (Arrays.equals(charS, charP)){
//将左窗口添加进去
result.add(left);
}
//窗口右移
charS[s.charAt(left) - 'a']--;
}
return result;
}
}
438找到字符串中所有的字母异位词由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“438找到字符串中所有的字母异位词”
上一篇
分布式事务
下一篇
建筑行业安全技能竞赛流程方案