您的位置:首页 > 其它

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: