Group Anagrams

捕获.PNG

这道题是要将字符串数组进行归类,比如"eat","aet","tea"这种就是一类,也就是说构造相同,但是顺序不同的进行归类,那么首先就要进行遍历,针对每一个字符串都进行排序,然后根据排序后的字符串放入map中进行标记,方便后续进行归档。那么代码如下

public class groupAnagrams {
    public static List> groupAnagrams(String[] strs) {
        List> res = new ArrayList<>();
        Map m = new HashMap<>();
        for(int i=0;i l = res.get(m.get(temp));
                l.add(strs[i]);
                res.set(m.get(temp),l);
            }else {
                List l = new ArrayList<>();
                l.add(strs[i]);
                res.add(l);
                m.put(temp,res.size()-1);
            }
        }
        return res;
    }

    public static String reOrder(String str){
        char[] ctr = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        for(int i=0;ictr[i]){
                    char temp = ctr[k];
                    ctr[k]=ctr[i];
                    ctr[i]=temp;
                }
            }
        }
        return String.valueOf(ctr);
    }

    public static void main(String[] args) {
        String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        List> res = groupAnagrams(strs);
        for(int i=0;i

你可能感兴趣的:(Group Anagrams)