728x90
문제
String s와 t가 주어졌을 때, t가 s의 anagram인지 여부 판단
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
풀이1
public static boolean isAnagram(String s, String t) {
Map<Character, Integer> map = new HashMap<>();
if (s.length() != t.length()) {
return false;
}
for (char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
for (char c : t.toCharArray()) {
if (map.containsKey(c) && map.get(c) > 0) {
map.put(c, map.get(c) - 1);
} else {
return false;
}
}
return true;
}
- HashMap 사용
- s와 t의 길이가 다르면 false 반환
- s의 char을 map에 저장 : 이 때 value는 등장 횟수
- t.toCharArray()를 순회
- map에 해당 key값이 존재하는지와 map.get(c)의 value가 0보다 큰지 여부 판단
- true → map.put(c, map.get(c) - 1) : 등장 횟수 - 1
- false → false 반환
- map에 해당 key값이 존재하는지와 map.get(c)의 value가 0보다 큰지 여부 판단
- 시간복잡도 : O(N)
풀이2
public static boolean isAnagram2(String s, String t) {
char[] sArr = s.toCharArray();
char[] tArr = t.toCharArray();
Arrays.sort(sArr);
Arrays.sort(tArr);
return Arrays.equals(sArr, tArr);
}
- s와 t를 각각 char 배열로 변환
- Arrays.sort()
- t가 s의 anagram이라면 Arrays.sort() 후, 두 배열이 서로 같아야 함 → 일치 여부 반환
'JAVA > Coding Test Study' 카테고리의 다른 글
[Easy] LeetCode - no.202 Happy Number : Java (0) | 2024.10.17 |
---|---|
[Easy] LeetCode - no.1 Two Sum : Java (0) | 2024.10.17 |
[Easy] LeetCode - no.290 Word Pattern : Java (0) | 2024.10.16 |
[Easy] LeetCode - no.205 Isomorphic Strings : Java (0) | 2024.10.16 |
[Easy] LeetCode - no.383 Ransom Note : Java (0) | 2024.10.14 |