-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path438-Find-All-Anagrams-in-a-String.java
42 lines (42 loc) · 1.37 KB
/
438-Find-All-Anagrams-in-a-String.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution {
public List<Integer> findAnagrams(String s, String p) {
// define character frequency of p
List<Integer> output = new ArrayList<Integer>();
int letters [] = new int [26];
char [] chararray = p.toCharArray();
for(int i = 0 ; i < p.length() ;i++)
{
//System.out.println("chararray : " + chararray[i]);
int ascii = chararray[i] - 'a';
letters[ascii]++;
}
//taking a substring of s and define the character frequency of it
for(int i = 0 ;i <= (s.length() - p.length()) ;i++)
{
int flag = 0;
String sub = s.substring(i ,i + p.length());
int letters2 [] = new int [26]; //define the character frequency of sub
char[] chararray2 = sub.toCharArray();
for(int k = 0 ; k < sub.length() ;k++)
{
//System.out.println("sub : " + chararray2[k]);
int ascii2 = chararray2[k] - 'a';
letters2[ascii2]++;
}
//comparing the 2 frequencies
for(int j = 0 ;j < 26 ;j++)
{
//System.out.print("letters : " + letters[j]);
//System.out.println(" , letters2 : " + letters2[j]);
if(letters[j] == letters2[j])
flag++;
}
if(flag == 26)
{
//System.out.println("sub : " + sub);
output.add(i);
}
}
return output;
}
}