LeetCode Find All Anagrams in a String
2016-10-24 12:30
351 查看
题意:给出两个字符串s,t,找出s中所有的p的打散后的字符串在s中的下标
思路:使用类似队列的思路来做,在针对s元素入队列时,判断元素是否在p中出现。当队列元素个数刚好为p的长度,并且为p的打散字符串,则出队列。
代码如下:
public class Solution
{
public List<Integer> findAnagrams(String s, String p)
{
List<Integer> ans = new ArrayList<>();
int[] pCharArray = new int[26];
int len_p = p.length();
for (int i = 0; i < len_p; i++)
{
pCharArray[p.charAt(i) - 'a']++;
}
int start = 0, end = 0;
while (end < s.length())
{
if (pCharArray[s.charAt(end++) - 'a']-- >= 1)
{
len_p--;
}
if (len_p == 0 && end - start == p.length())
{
ans.add(start);
}
if (end - start == p.length())
{
if (pCharArray[s.charAt(start) - 'a']++ >= 0)
{
len_p++;
}
start++;
}
}
return ans;
}
}
思路:使用类似队列的思路来做,在针对s元素入队列时,判断元素是否在p中出现。当队列元素个数刚好为p的长度,并且为p的打散字符串,则出队列。
代码如下:
public class Solution
{
public List<Integer> findAnagrams(String s, String p)
{
List<Integer> ans = new ArrayList<>();
int[] pCharArray = new int[26];
int len_p = p.length();
for (int i = 0; i < len_p; i++)
{
pCharArray[p.charAt(i) - 'a']++;
}
int start = 0, end = 0;
while (end < s.length())
{
if (pCharArray[s.charAt(end++) - 'a']-- >= 1)
{
len_p--;
}
if (len_p == 0 && end - start == p.length())
{
ans.add(start);
}
if (end - start == p.length())
{
if (pCharArray[s.charAt(start) - 'a']++ >= 0)
{
len_p++;
}
start++;
}
}
return ans;
}
}
相关文章推荐
- 【leetcode】Find All Anagrams in a String
- [python]leetcode(438). 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 #438: Find All Anagrams in a String
- LeetCode 438. Find All Anagrams in a String (在字符串中找到所有的变位词)
- leetcode_438. Find All Anagrams in a String
- leetcode oj java 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 找出字符串中所有的变位词
- 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
- LeetCode438 Find All Anagrams in a String
- Leetcode——438. Find All Anagrams in a String
- Leetcode Find All Anagrams in a String
- leetcode 438. Find All Anagrams in a String 一个简单的移动窗口问题