반응형
문제 링크
https://leetcode.com/problems/group-anagrams/
문제 설명
배열에 있는 문자들끼리의 아나그램을 구하고 그룹핑 시켜라
내 코드
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> results = new ArrayList<>();
List<String> stringList = new ArrayList<>();
stringList.add(strs[0]);
results.add(stringList);
for(int i = 1; i < strs.length; i++) {
boolean add = true;
for(List<String> result : results) {
String r = result.get(0);
if(isAnagram(r, strs[i])) {
result.add(strs[i]);
add = false;
break;
}
}
if(add) {
stringList = new ArrayList();
stringList.add(strs[i]);
results.add(stringList);
}
}
return results;
}
private boolean isAnagram(String s, String t) {
if(s.length() != t.length()) return false;
int[] arr = new int[128];
for(int i = 0; i < s.length(); i++) arr[s.charAt(i)]++;
for(int i = 0; i < t.length(); i++) arr[t.charAt(i)]--;
for(int i = 0; i < arr.length; i++) {
if(arr[i] != 0) return false;
}
return true;
}
결과
답은 다 맞았지만 이중 for문으로 인해 O(n)의 조건을 맞추지 못하였다.
답안중에 hashmap을 이용한 문제 풀이를 적용하자 깔끔하게 해결!!
map이랑 더 친해지는게 답인거 같다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm][Recursion] 문제 풀이 #17 - Generate Parentheses (0) | 2022.08.04 |
---|---|
[Algorithm][Array] 문제 풀이 #16 - Ransom Note (0) | 2022.08.01 |
[Algorithm][Array] 문제 풀이 #14 - Find All Anagrams in a String (0) | 2022.07.27 |
[Algorithm][Array] 문제 풀이 #13 - Longest Repeating Character Replacement (0) | 2022.07.25 |
[Algorithm][Array] 문제 풀이 #12 - Longest Substring Without Repeating Characters (0) | 2022.07.24 |