Find All Anagrams in a String Add to List
2017-04-09 21:59
435 查看
Given a string s and a non-empty string p, find all the start indices of p’s anagrams in s.
Strings consists of lowercase English letters only and the length of both strings s 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”.
Example 2:
Input:
s: “abab” p: “ab”
Output:
[0, 1, 2]
Explanation:
The substring with start index = 0 is “ab”, which is an anagram of “ab”.
The substring with start index = 1 is “ba”, which is an anagram of “ab”.
The substring with start index = 2 is “ab”, which is an anagram of “ab”.
方法:乱序包含字母考虑哈希方式。
Strings consists of lowercase English letters only and the length of both strings s 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”.
Example 2:
Input:
s: “abab” p: “ab”
Output:
[0, 1, 2]
Explanation:
The substring with start index = 0 is “ab”, which is an anagram of “ab”.
The substring with start index = 1 is “ba”, which is an anagram of “ab”.
The substring with start index = 2 is “ab”, which is an anagram of “ab”.
方法:乱序包含字母考虑哈希方式。
class Solution { public: vector<int> findAnagrams(string s, string p) { vector<int> sv(26,0),pv(26,0),res; int len = 0; for(int i = 0 ; i < p.size(); ++i){ ++pv[p[i]-'a']; len ++; } for(int i = 0; i < s.size(); ++i){ ++sv[s[i]-'a']; if(i+1<len) continue; else{ if(sv == pv) res.push_back(i-len+1); --sv[s[i-len+1]-'a']; } } return res; } };
相关文章推荐
- 【leetcode】Find All Anagrams in a String
- 438. Find All Anagrams in a String
- Leetcode Find All Anagrams in a String
- 438. Find All Anagrams in a String
- [LeetCode] Find All Anagrams in a String 找出字符串中所有的变位词
- Leetcode: 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
- [LeetCode]Find All Anagrams in a String
- 438. Find All Anagrams in a String
- 438. Find All Anagrams in a String
- leetcode oj java Find All Anagrams in a String
- LeetCode438 Find All Anagrams in a String
- leetcode: Find All Anagrams in a String
- LeetCode笔记:438. Find All Anagrams in a String
- Leetcode 438 Find All Anagrams in a String
- LeetCode Find All Anagrams in a String
- leetcode——Find All Anagrams in a String