๋ฌธ์ ํ์
๋ ๋ฌธ์์ด s
์ t
๊ฐ ์ฃผ์ด์ง๋ค.
๋ ๋ฌธ์์ด์ ์ด๋ฃจ๋ ๋ฌธ์์ ์ข ๋ฅ์ ๊ฐ์๊ฐ ๋์ผํ ๋, Anagram ์ด๋ผ๊ณ ํ๋๋ฐ
Anagram์ธ์ง ํ๋จํ๋ ๋ฌธ์ ์ด๋ค.
ํ์ด
1๏ธโฃ map์ ์ด์ฉํ ํ์ด
๐ก ๋ ์ค๋ฅธ Ideas
๋ฌธ์์ด์ ์ชผ๊ฐ ํ, ๊ฐ ๋ฌธ์๋ณ ๊ฐ์๋ฅผmap
์ ๊ธฐ๋กํ๋ค.
๊ทธ๋ฆฌ๊ณt
๋ฌธ์์ด์ ์ชผ๊ฐ ํ, ์ํํ๋ฉด์map
์ ๊ธฐ๋ก๋์ด์๋์ง ํ์ธํ๊ณ ๊ฐ์๋ฅผ -1 ํ๋ค.
๋ง์ฝ, ๋ฌธ์๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ๊ฐ์๊ฐ 0๋ฏธ๋ง์ด ๋๋ฉดfalse
๋ฅผ ๋ฐํํ๋ค.
๋ํ, ์ ์ด์ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉดfalse
๋ฅผ ๋ฐํํ๋ค.
์ ๋ฌธ์ ์ ๊ฑฐ์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์์๋ค.
import java.util.*;
class Solution {
public boolean isAnagram(String s, String t) {
HashMap<Character, Integer> map = new HashMap<>();
if (s.length() != t.length()) {
return false;
}
char[] split = s.toCharArray();
for (char ch : split) {
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
split = t.toCharArray();
for (char ch : split) {
if (!map.containsKey(ch) || map.get(ch) == 0) {
return false;
} else {
map.put(ch, map.get(ch) - 1);
}
}
return true;
}
}
๊ฒฐ๊ณผ
2๏ธโฃ sort๋ฅผ ์ด์ฉํ ํ์ด
๐ก ๋ ์ค๋ฅธ Idea
๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด, ์ชผ๊ฐ ํ ์ ๋ ฌํ์ ๋ ๊ฐ์ ๋ฐฐ์ด์ด ๋์ค๋ฉด Anagram์์ ํ๋จํ ์ ์๋ค.
import java.util.*;
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] arr1 = s.toCharArray();
char[] arr2 = t.toCharArray();
Arrays.sort(arr1);
Arrays.sort(arr2);
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
}
๊ฒฐ๊ณผ
๐ ํ๊ณ
HashMap
์ ์ฌ์ฉํด์ ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ๋ ๊ฑฐ์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
๋ํ, ํ์ด ๋ฐฉ์์ด ์ ํํ๋์ด์์ด์, ํน์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ง ์์์ ๊น๋ค๋ก์ด ๋ฌธ์ ๊ฐ ์์๋ ๊ฒ ๊ฐ๋ค.