为了账号安全,请及时绑定邮箱和手机立即绑定

如何排序文本文件以查找O(MN)时间复杂度的字谜,其中M是最大字符数,N是单词数?

如何排序文本文件以查找O(MN)时间复杂度的字谜,其中M是最大字符数,N是单词数?

幕布斯7119047 2021-05-09 10:33:34
嗨,我是Python的新手,我想在一个线性时间的文件中找到一组字谜。字谜基本上是两个或多个单词,由相同的字母组成,但排列方式不同。首先,我将所有单词读入列表。显然,我可以使用基数排序按列对每个单词进行排序,并且基数排序应使用稳定的计数排序。但是我不确切知道我的计数排序应该怎么做?我是否应该编写一个包含单词并按字母顺序排序的计数排序功能?然后以基数排序称呼它吗?有人可以给我一个更清晰的方法来解决这个问题吗?感谢您的帮助!
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

希望这对您有所帮助。也是O(mn)


public List<List<String>> groupAnagrams(String[] strs){

    List<List<String>> result = new ArrayList<List<String>>();

    

    HashMap<ArrayList<Integer>, ArrayList<String>> map = new HashMap<ArrayList<Integer>, HashMap<ArrayList<String>>;

    

    for(String str : strs){

        ArrayList<Integer> arr = new ArrayList<Integer>();

        for(int i=0; i<str.length(); i++){

            arr[str.charAt(i)- 'a']++;

        }

        

        if(map.containsKey(arr)){

            map.get(arr).add(str);

        } else {

            ArrayList<String> al = new ArrayList<String>();

            al.add(str);

            map.put(arr, al);

        }

    }

    

    result.addAll(map.values());

    

    return result;

}


查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信