问题

例子

思路
-
方法1
滑动窗口
-
方法2
代码
//方法1
class Solution {
public boolean check(int[] arr) {
for(int n : arr){
if(n!=0) return false;
}
return true;
}
public List<Integer> findAnagrams(String s, String p) {
if(p.length()>s.length()) return new ArrayList<Integer>();
List<Integer> list = new ArrayList<>();
int[] arr = new int[128];
for(int i=0; i<p.length(); i++) {
arr[p.charAt(i)]--;
arr[s.charAt(i)]++;
}
if(check(arr)) list.add(0);
for(int i=p.length(); i<s.length(); i++) {
arr[s.charAt(i-p.length())]--;
arr[s.charAt(i)]++;
if(check(arr)) list.add(i-p.length()+1);
}
return list;
//方法2

本文深入探讨了滑动窗口算法的原理与应用,通过具体的代码示例,详细讲解了如何使用滑动窗口来解决字符串中寻找子串的问题,包括算法的基本思路、实现方法以及代码实现细节。
519

被折叠的 条评论
为什么被折叠?



