438. Find All Anagrams in a String(不太懂)
2017-02-21 00:08
357 查看
题目
Given a string
s and a non-empty string p, find all the start indices ofp's anagrams in
s.
Strings consists of lowercase English letters only and the length of both stringss and
p will not be larger than 20,100.
The order of output does not matter.
Example 1:
Input:
s: "cbaebabacd" p: "abc"
Output:
[0, 6]
Explanation:
The substring with start index = 0 is "cba", which is an anagram of "abc".
The substring with start index = 6 is "bac", which is an anagram of "abc".
答案解法(还不是很理解)
Given a string
s and a non-empty string p, find all the start indices ofp's anagrams in
s.
Strings consists of lowercase English letters only and the length of both stringss and
p will not be larger than 20,100.
The order of output does not matter.
Example 1:
Input:
s: "cbaebabacd" p: "abc"
Output:
[0, 6]
Explanation:
The substring with start index = 0 is "cba", which is an anagram of "abc".
The substring with start index = 6 is "bac", which is an anagram of "abc".
答案解法(还不是很理解)
public class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> list = new ArrayList<>(); if (s == null || s.length() == 0 || p == null || p.length() == 0) return list; int[] hash = new int[256]; for (char c : p.toCharArray()) hash[c]++; int left = 0, right = 0, count = p.length(); while (right < s.length()) { if (hash[s.charAt(right)] >= 1) count--; hash[s.charAt(right)]--; right++; if (count == 0) list.add(left); if (right - left == p.length() ) { if (hash[s.charAt(left)] >= 0) count++; hash[s.charAt(left)]++; left++; } } return list; } }点击打开链接,
相关文章推荐
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String*
- HashTable-438-Find All Anagrams in a String
- LeetCode #438: Find All Anagrams in a String
- 【Leetcode】438. Find All Anagrams in a String
- Leetcode——438. Find All Anagrams in a String
- LeetCode 438 Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- Easy 438题 Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438 Find All Anagrams in a String 找出字符串中所有的变位词
- LeetCode 438. Find All Anagrams in a String (在字符串中找到所有的变位词)
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String