首页 > 其他 > 详细

438. Find All Anagrams in a String

时间:2018-10-22 12:35:11      阅读:159      评论:0      收藏:0      [点我收藏+]
 1 class Solution {
 2     public List<Integer> findAnagrams(String s, String p) {
 3         List<Integer> res = new ArrayList<>();
 4         if(s.length() == 0 || s.length() < p.length()) return res;
 5         int[] map = new int[128];
 6         int count = 0;
 7         for(char c : p.toCharArray()){
 8             map[c]++;
 9             count++;
10         }
11         int begin = 0, end = 0;
12         while(end < s.length()){
13             if(end < p.length()-1){
14                 if(map[s.charAt(end)]-- > 0 ) count--;
15                 end++;
16             }else{
17                 if(map[s.charAt(end)]-- > 0) count--;
18                 end++;
19                 if(count == 0) res.add(begin);
20                 // System.out.println(count);
21                 if(map[s.charAt(begin)]++ >= 0) count++;  // >= 0 !!! 注意
22                 begin++;
23             }
24         }
25         return res;
26         
27     }
28 }

 

438. Find All Anagrams in a String

原文:https://www.cnblogs.com/goPanama/p/9829255.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!