File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments