Algorithm
[Algorithm][Array] 문제 풀이 #15 - Group Anagrams
Lee David
2022. 7. 28. 19:09
반응형
문제 링크
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이랑 더 친해지는게 답인거 같다.
반응형