leetcode 49 字母异位词分组及思考:toString() 方法

记录与2019年,时间真的如流水
leetcode 49 字母异位词分组及思考:toString() 方法_第1张图片

题目

leetcode 49 字母异位词分组及思考:toString() 方法_第2张图片

思路

这就相当于把string分组嘛,相同的组的string的字符一样。自然而然想到了map。那么key呢,把所有的字符串都归一化成一种样式,比如从小到大排序,或者从大到小排序,只要大家都遵守一样的规则就欧克了。

答案

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> result = new HashMap<>();
        for(String str : strs) {
            String key = sortStr(str);
            if(result.containsKey(key)) {
                result.get(key).add(str);
            }else {
                List<String> value = new ArrayList<>();
                value.add(str);
                result.put(key, value);
            }
        }
        List<List<String>> res = new ArrayList<>();
        res.addAll(result.values());
        return res;
    }

    private String sortStr(String str) {
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        return String.valueOf(chars);
    }
}

那么来发散一下
1 char[] .toString 到底返回了什么
重载object的toStirng方法,返回类型@hash

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

类可以重写该函数,输出自己想要的结果。

2 如何转成String
(1)强转,(String),强转用instanceof做类型检查,来判断是否可以转换。否则类型不匹配,抛出CalssCastException异常。
(2).toString()
object不能为null,否则会抛出NullPointerException异常。
(3)String.valueOf()
挺好的,但是如果objectnull,会返回字符串"null"
(4)Arrays.toString(char[] a),返回的是 用逗号分隔,包围[]的字符串。
(5)new String(char[] a)也可

你可能感兴趣的:(leetcode,哈希算法,算法)