Learn & Run

[LeetCode] Group Anagrams (Java) 본문

Algorithm/Leetcode

[LeetCode] Group Anagrams (Java)

iron9462 2021. 1. 7. 17:02

leetcode.com/problems/group-anagrams/submissions/

 

Group Anagrams - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

번역 : 문자열 배열이 주어지면 Anagram을 함께 그룹화합니다. Anagram은 일반적으로 모든 원래 문자를 정확히 한 번 사용하여 다른 단어 또는 구의 문자를 재정렬하여 형성된 단어 또는 구입니다. 어떤 순서로든 답변을 반환 할 수 있습니다.

 

 

1. 접근 아이디어 

 

  • 각 Index의 문자열을 정렬합니다.
  • HashMap을 이용하여 문자열을 Key로 지정하는데 HashMap에 Key에 대한 Value가 등록되어 있지않으면 문자열 리스트를 추가하고, 이미 Key가 등록되어 있으면 해당 Value에 문자열을 추가해줍니다.
  • 작업이 끝나면 반환형식에 맞게 리턴합니다.

2. 소스 코드

 

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> result = new ArrayList<>();
        Map<String, List<String>> map = new HashMap<>();
        if(strs == null) return result;
        for(int i=0; i<strs.length; i++) {
            char[] next = strs[i].toCharArray();
            Arrays.sort(next);
            String temp = Arrays.toString(next);
            if(map.containsKey(temp)) map.get(temp).add(strs[i]);
            else {
                List<String> list = new ArrayList<>();
                list.add(strs[i]);
                map.put(temp, list);
            }
        }
        return new ArrayList(map.values());
    }
}