Given two strings s
and t
, return true
if t
is an anagram of s
, and false
otherwise.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
s
, t
s
문자열을 재배치하여 t
를 만들 수 있는가?전략 1. Map 자료구조 사용
s
를 이용하여 Map을 만들고, t
를 이용하여 Map의 횟수를 하나씩 차감해나감전략 2. Sorting
class Solution {
public boolean isAnagram(String s, String t) {
Map<Character, Integer> countOfLetter = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char letter = s.charAt(i);
int count = countOfLetter.getOrDefault(letter, 0);
countOfLetter.put(letter, count + 1);
}
for (int i = 0 ; i < t.length(); i++) {
char letter = t.charAt(i);
int count = countOfLetter.getOrDefault(letter, 0);
if (count <= 0) {
return false;
}
countOfLetter.computeIfPresent(letter, (key, value) -> value - 1);
countOfLetter.remove(letter, 0);
}
return countOfLetter.isEmpty();
}
}
class Solution {
public boolean isAnagram(String s, String t) {
Map<Character, Integer> count = new HashMap<>();
for (char x : s.toCharArray()) {
count.put(x, count.getOrDefault(x, 0) + 1);
}
for (char x : t.toCharArray()) {
count.put(x, count.getOrDefault(x, 0) - 1);
}
for (int val : count.values()) {
if (val != 0) {
return false;
}
}
return true;
}
}
class Solution {
public boolean isAnagram(String s, String t) {
char[] sChars = s.toCharArray();
char[] tChars = t.toCharArray();
Arrays.sort(sChars);
Arrays.sort(tChars);
return Arrays.equals(sChars, tChars);
}
}
Map
을 사용하는 방법이 더 좋음Sorting
이 시간 성능이 더 잘 나오는 것은 제공되는 데이터의 길이가 그렇게 길지 않은 것으로 추정됨s.length
, t.length
<= 50,000Map
을 만들고 쓰는 데에 생각보다 비용이 많이 필요로 하는 것을 알 수 있었다.