-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnagrams.java
More file actions
79 lines (75 loc) · 2.26 KB
/
Copy pathAnagrams.java
File metadata and controls
79 lines (75 loc) · 2.26 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
* Ketentuan
* - Diberikan string a & b
* - Jika kedua string bernilai sama(no case-sensitive).
* - Hasil boolean, jika benar maka true dan sebaliknya
*
*
* Contoh
* - Input
* x = anagram
* y = margana
* - Output
* true(is anamgrams)
* - Penjelasan
* Explanation 0
* Character Frequency: anagram
* A or a 3 3
* G or g 1 1
* N or n 1 1
* M or m 1 1
* R or r 1 1
* The two strings contain all the same letters in the same frequencies, so we print "Anagrams".
*
*
* Solusi
* A. Dengan membandingkan semua karakter kedua string dari depan/belakang.
* B. Dengan mengguanakn stuktur data hashmap untuk simpan nilai.
* ===
* A.
* B.
* - Cek jika string null
* - Array untuk simpan jumlah nilai dari masing2 kata
* -
*/
public class Anagrams {
public static void main(String[] args) {
String a = "madam",
b = "amadm";
System.out.println(isAnagram(a, b));
}
/**
* - Cek jika kedua string tidak null, dan panjang keduanya sama
* - Ubah keduanya ke string kecil
* - variabel countA(String a) dan countB(String b) untuk jumlah kata yg sama
* - Perulangan dari string a, ambil perkata lalu bandingkan dgn string a dan b, jika sama maka count(A/B) ditambah.
* - Cek jika kedua count tidak sama maka return false
* - Jika hingga akhir perulangan kedua count sama maka return true
*/
static boolean isAnagram(String a, String b) {
// Complete the function
if(!a.isEmpty() && !b.isEmpty() && a.length() == b.length()) {
String lowerA = a.toLowerCase(),
lowerB = b.toLowerCase();
int countA = 0,
countB = 0,
aLength = a.length();
for(int indx = 0; indx < aLength; indx++) {
char temp = lowerA.charAt(indx);
for(int indx2 = 0; indx2 < aLength; indx2++) {
if(lowerA.charAt(indx2) == temp) {
countA++;
}
if(lowerB.charAt(indx2) == temp) {
countB++;
}
}
if(countA != countB) {
return false;
}
}
return true;
}
return false;
}
}