-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanagram.java
46 lines (37 loc) · 1.03 KB
/
anagram.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
43
44
45
46
// Solution 1:Sort and compare i.e
// boolean anagram1(String s,String t){
// return sort(s)==sort(t);
// }
//SOLUTION 2:Check if the two strings have equal number of each unique chars
class anagram{
public static boolean anagram(String s,String t){
if(s.length()!=t.length()) return false;
int[] letters=new int[256];
int num_unique_chars=0;
int num_completed_t=0;
char[] s_array=s.toCharArray();
for(char c:s_array){
if(letters[c]==0)
++num_unique_chars;
++letters[c];
}
for(int i=0;i<t.length();i++){
int c=(int) t.charAt(i);
if(letters[c]==0) return false; //since it's already seen that t has an extra character
--letters[c];
if(letters[c]==0){
num_completed_t++;
if(num_completed_t==num_unique_chars)
return i==t.length()-1;//to check if all the iteration of the i loop has taken place
}
}
return false;
}
public static void main(String[] args){
String s="togod";
String t="dotog";
System.out.println(anagram(s,t)); //prints true
s="cykab";
System.out.println(anagram(s,t)); //prints false
}
}