我是靠谱客的博主 凶狠吐司,最近开发中收集的这篇文章主要介绍【LeetCode】49. 字母异位词分组(JAVA)(非100%),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原题地址:https://leetcode-cn.com/problems/group-anagrams/

题目描述:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:
输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
输出:
[
[“ate”,“eat”,“tea”],
[“nat”,“tan”],
[“bat”]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

解题方案:
思路是把所有字符串转换成字母向量了,然后再转换成string并比较,相同的放在同一个数组里。题解里有好多思路,我的应该是最慢的了 ???? 待我明天再学习一下。。

代码:

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> res = new ArrayList<>();   
        String[] vec_All = new String[strs.length];
        for(int i = 0; i < strs.length; i ++)
        {
            char[] vec = new char[26]; //建一个向量
            for(int k = 0; k < 26; k ++)
                vec[k] = '0';
            for(int j = 0; j < strs[i].length(); j ++)
                vec[strs[i].charAt(j) - 'a'] += 1;
            String s1 = String.copyValueOf(vec);
            vec_All[i] = s1;
        }

        int[] visited = new int[strs.length];
        for(int i = 0; i < strs.length; i ++)
        {
            List<String> tmp = new ArrayList<>();
            if(visited[i] == 1)
                continue;
            visited[i] = 1;
            tmp.add(strs[i]);
            for(int j = i + 1; j < strs.length; j ++)
            {
                if(visited[j] == 0 && vec_All[j].equals(vec_All[i]))
                {
                    tmp.add(strs[j]);
                    visited[j] = 1;
                }
            }
            res.add(tmp);
        }
        return res;
        
    }
}

最后

以上就是凶狠吐司为你收集整理的【LeetCode】49. 字母异位词分组(JAVA)(非100%)的全部内容,希望文章能够帮你解决【LeetCode】49. 字母异位词分组(JAVA)(非100%)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部