Group Anagrams
Given an array of strings strs
, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1 : Input : strs = ["eat","tea","tan","ate","nat","bat"] Output : [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2 : Input : strs = [""] Output : [[""]]
Example 3 : Input : strs = ["a"] Output : [["a"]]
알고리즘 1. 자료구조 만든다. - Ma과 정답List<List<String>> 2. Input String을 char[ ] 배열로 바꾼다. - String.toCharArray() 이용 이를 알파벳순으로 정렬한다. - Arrays.sort()이용.(알파벳순으로 정렬) 3. 2를 다시 String으로 바꾸고, 이것은 map의 key가 된다! - String.valueOf()이용 4. Map에 넣는다! Map(key,value) = Map(String, List<String>). key는 일종의 index, value는 일종의 데이터라고 생각하면 편함! 5. 정답이 되는 List<List<String>>를 리턴한다.map의 모든 value를 담는다. - .addAll(map.values()) 이용
알고리즘을 Java로
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//0.기저사례 제외
if (strs == null || strs.length == 0) return new ArrayList<List<String>>();
//1.그릇 생성
List<List<String>> result = new ArrayList<>();
Map<String,List<String>> map = new HashMap<String,List<String>>();
for(String str : strs) {
//2-1.String을 char[]로 바꾼다.
//2-2.Arrays.sort()를 이용하여 2-1을 정렬한다!
char[] charArray = str.toCharArray();
Arrays.sort(charArray);
//3.정렬한 char 배열의 값은 String이 되고, 이것은 map의 key가 된다.
//3-1. char[]를 다시 String으로 바꾼다.
//3-2. 3-1을 map의 key로 만든다(저장한다).
String key = String.valueOf(charArray);
//4.Map(key,value) = Map(String,List<String>)
if(map.containsKey(key)) {//key값으로 aet가 존재한다면!
map.get(key).add(str);
}else {//처음엔 else문 실행!
List<String> list = new ArrayList<>();
list.add(str);
map.put(key,list);
}
}
result.addAll(map.values());
return result;
}
}
배운 내용 정리 1. String.toCharArray() : String을 char[ ] 배열로 바꾼다.(빈출,중요!) 2. String.valueOf(parameter) : 인자로 전달받은 것을 String으로 바꾼. 3. Map.values() : Map의 모든 values를 가져온다. 4. ArrayList.addAll() : ArrayList의 add() 메서드와 addAll() 메서드는 ArrayList에 인자로 전달받은 것을 데이터로 추가한다. addAll()은 ArrayList를 통째로 추가할 때 사용된다.
result.addAll(map.values());
//map.values()를 통해 map의 모든 value를 가져오고,
//이 때 map의 value는 String 타입의 List이고, 이 List는 ArrayList를 통해 만들어짐!
Last updated
Was this helpful?