Skip to content

Commit d21d14e

Browse files
valid anagram solution
1 parent bb2f2d3 commit d21d14e

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

valid-anagram/jaejeong1.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class SolutionValidAnagram {
5+
public boolean isAnagram(String s, String t) {
6+
// 풀이: 해시맵을 사용해 s와 t의 문자 별 빈도수를 저장한다
7+
// 두 빈도수의 모든 키와 값이 같고, 크기가 같은지 비교한다.
8+
// 다르다면 false를 반환, 모두 같다면 true를 반환한다.
9+
// 시간복잡도: O(N), 공간복잡도: O(N)
10+
11+
Map<Character, Integer> sAnagram = createAnagramMap(s);
12+
Map<Character, Integer> tAnagram = createAnagramMap(t);
13+
14+
// 두 해시맵의 크기가 같은지 확인
15+
if (sAnagram.size() != tAnagram.size()) {
16+
return false;
17+
}
18+
19+
// sAnagram과 tAnagram의 모든 키와 값을 비교
20+
for (Map.Entry<Character, Integer> entry : sAnagram.entrySet()) {
21+
var key = entry.getKey();
22+
int value = entry.getValue();
23+
24+
// tAnagram에 key가 존재하지 않거나, 그에 대응하는 value가 다르면 false 반환
25+
if (!tAnagram.containsKey(key) || !tAnagram.get(key).equals(value)) {
26+
return false;
27+
}
28+
}
29+
30+
return true;
31+
}
32+
33+
private Map<Character, Integer> createAnagramMap(String text) {
34+
Map<Character, Integer> anaGramMap = new HashMap<>();
35+
36+
for (var c: text.toCharArray()) {
37+
anaGramMap.put(c, anaGramMap.getOrDefault(c, 0) + 1);
38+
}
39+
40+
return anaGramMap;
41+
}
42+
}

0 commit comments

Comments
 (0)