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