|
1 |
| -import java.util.HashMap; |
2 |
| -import java.util.Map; |
3 |
| - |
4 |
| -/** |
5 |
| - * ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ |
6 |
| - */ |
7 |
| -// ์๊ฐ ๋ณต์ก๋: ๋ฌธ์์ด์ ํ ๋ฒ์ฉ๋ง ๋ฐฉ๋ฌธ -> O(n) |
8 |
| -// ๊ณต๊ฐ ๋ณต์ก๋: ๋ฌธ์์ด ๊ธธ์ด๋งํผ ๊ณต๊ฐ ํ์(hashmap ํฌ๊ธฐ) -> O(n) |
| 1 | +// ์๊ฐ ๋ณต์ก๋: O(n) - ๋ฌธ์์ด ๊ธธ์ด n |
| 2 | +// ๊ณต๊ฐ ๋ณต์ก๋: O(1) - ์ํ๋ฒณ ๊ฐ์๋ 26๊ฐ๋ก ๊ณ ์ ๋์ด ์์ |
9 | 3 | class Solution {
|
10 | 4 | public boolean isAnagram(String s, String t) {
|
| 5 | + if(s.length()!=t.length()) return false; // ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด false |
11 | 6 |
|
12 |
| - // s ์์ ๋ฌธ์๋ค์ด t ์๋ ๋์ผํ ํ์๋ก ๋ฑ์ฅํ๋ ์ง ํ์ธ |
13 |
| - if (s.length() != t.length()) return false; // ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด ์๋๊ทธ๋จ์ด ์๋๋ค. |
14 |
| - |
15 |
| - // ๋ฌธ์๋ณ ํ์ ์ ์ฅ map |
16 |
| - Map<Character, Integer> sAlphabetCountMap = new HashMap<>(); |
17 |
| - for (char c : s.toCharArray()) { // ์๊ฐ๋ณต์ก๋: O(n) |
18 |
| - sAlphabetCountMap.put(c, sAlphabetCountMap.getOrDefault(c, 0) + 1); |
| 7 | + int[] letterCount = new int[26]; |
| 8 | + // ๊ฐ ์ํ๋ฒณ์ ๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํ ๋ฐฐ์ด |
| 9 | + for(int i = 0; i < s.length(); i++){ |
| 10 | + letterCount[s.charAt(i) - 'a']++; |
| 11 | + letterCount[t.charAt(i) - 'a']--; |
19 | 12 | }
|
20 | 13 |
|
21 |
| - for (char c : t.toCharArray()) { // ์๊ฐ๋ณต์ก๋: O(n) |
22 |
| - if (!sAlphabetCountMap.containsKey(c)) return false; // s์ t๊ฐ ๊ฐ์ง ๋ฌธ์์ด์ด ์๋ค๋ฉด ์๋๊ทธ๋จ์ด ์๋๋ค. |
23 |
| - |
24 |
| - int count = sAlphabetCountMap.get(c) - 1; |
25 |
| - if (count == 0) sAlphabetCountMap.remove(c); |
26 |
| - else sAlphabetCountMap.put(c, count); |
| 14 | + for(int count : letterCount){ |
| 15 | + if(count != 0) return false; |
27 | 16 | }
|
| 17 | + return true; |
28 | 18 |
|
29 |
| - // ๋ชจ๋ ๋ฌธ์๊ฐ ์ผ์นํ๋ฉด ํด์๋งต์ด ๋น์ด ์์ด์ผ ํจ |
30 |
| - return sAlphabetCountMap.isEmpty(); |
31 | 19 | }
|
32 | 20 | }
|
| 21 | + |
0 commit comments