其他分享
首页 > 其他分享> > 2022-4-26 滑动窗口

2022-4-26 滑动窗口

作者:互联网

438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

 1 class Solution {
 2     public List<Integer> findAnagrams(String s, String p) {
 3         List<Integer> list=new ArrayList<>();
 4         if (s.length()<p.length()) return list;
 5         int[] need=new int[26];
 6         int[] cur=new int[26];
 7         int l=0,r=0,n=p.length();
 8         for (int i=0;i<n;i++){
 9             need[p.charAt(i)-'a']++;
10         }
11         while (r<s.length()){
12             cur[s.charAt(r)-'a']++;
13             r++;
14             if (r-l<n) continue;
15             if (Arrays.equals(need,cur)){
16                 list.add(l);
17             }
18             cur[s.charAt(l)-'a']--;
19             l++;
20         }
21         return list;
22     }
23 
24 }

思路:滑动窗口。数组判断应该比hash判断更快,占用空间更大。

标签:子串,26,String,异位,List,2022,字符串,滑动
来源: https://www.cnblogs.com/benbicao/p/16194290.html