그룹 애너그램
5586 단어 javaleetcodealgorithms
목적:
문자열 strs의 배열이 주어지면 애너그램을 함께 그룹화합니다. 어떤 순서로든 답변을 반환할 수 있습니다.
애너그램은 일반적으로 모든 원래 문자를 정확히 한 번만 사용하여 다른 단어나 구의 문자를 재배열하여 형성된 단어 또는 구입니다.
패턴: 배열 및 해싱
접근하다:
빅오 표기법:
시간 복잡도: O(m * nlog(n))
각 문자열에 대해 n번 반복합니다.
O(n log(n))인 Arrays.sort()를 사용하여 각 문자열을 정렬합니다.
공간 복잡도: O(n * m)
스토리지를 위해 추가 데이터 구조를 사용합니다.
결과를 저장할 2D 목록이 있습니다.
요소를 저장하기 위한 해시맵이 있습니다.
암호:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// input: string array
// output: 2D list
List<List<String>> result = new ArrayList<List<String>>();
Map <String, List<String>> hashMap = new HashMap<>();
for(String str : strs){
char [] array = str.toCharArray();
Arrays.sort(array);
String sortStr = str.valueOf(array);
// edge case if current == key then add to key.
if(sortStr == str || !hashMap.containsKey(sortStr)){
List <String> anagram = new ArrayList<>();
anagram.add(str);
hashMap.put(sortStr, anagram);
} else {
hashMap.get(sortStr).add(str);
}
}
// add anagram list into result
for(String s : hashMap.keySet()){
result.add(hashMap.get(s));
}
return result;
}
}
Reference
이 문제에 관하여(그룹 애너그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tammyvocs/group-anagrams-4hjg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)