本文主要是介绍【刷题1】LeetCode 438. 找到字符串中所有字母异位词 java题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
滑动窗口 字符串
题目
class Solution {public List<Integer> findAnagrams(String s, String p) {//因为无序,所以统计字符数//节省复杂度,所以使用滑动窗口增删ArrayList<Integer> res=new ArrayList<>();int slen=s.length();int plen=p.length();if(slen<plen){return res;//不存在}int[] scount=new int[26];int[] pcount=new int[26]; for(int j=0;j<plen;j++){pcount[p.charAt(j)-'a']++;scount[s.charAt(j)-'a']++;}if(Arrays.equals(scount,pcount)){res.add(0);//从头开始就匹配}//开始滑动窗口,删除当前窗口第一个,在窗口后增加一个for(int i=0;i<=slen-plen-1;i++){scount[s.charAt(i)-'a']--;//删除scount[s.charAt(i+plen)-'a']++;//增加if(Arrays.equals(scount,pcount)){res.add(i+1);}}return res;}
}
这篇关于【刷题1】LeetCode 438. 找到字符串中所有字母异位词 java题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!