public class Solution2
{
public List<int> FindAnagrams(string s, string p)
{
if (p.Length > s.Length)
{
return new List<int>();
}
List<int> result = new List<int>();
int[] mapP = new int[26];
foreach (var symbol in p)
{
mapP[symbol - 'a']++;
}
for (int i = 0; i < p.Length; i++)
{
if (IsAnagram(mapP))
{
result.Add(i - p.Length);
}
}
for (int i = p.Length; i < s.Length; i++)
{
mapP[s[i-p.Length] - 'a']++;
mapP[s[i] - 'a']--;
if (IsAnagram(mapP))
{
result.Add(i-p.Length+1);
}
}
Console.WriteLine($"return the list 2 ");
result.ForEach(Console.WriteLine);
return result;
}
bool IsAnagram(int[] map)
{
foreach (var count in map)
{
if (count != 0)
{
return false;
}
}
return true;
}
}