zoukankan      html  css  js  c++  java
  • LeetCode.49

      Given an array of strings, group anagrams together.

      For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
      Return:

      [
        ["ate", "eat","tea"],
        ["nat","tan"],
        ["bat"]
      ]

      Note: All inputs will be in lower-case.

      这个题没太懂该怎么输出,它给的返回类型是多维数组...看讨论貌似只需要把与自己排序字符串相同的放在一起就可以了。

      于是,我的代码:

    class Solution {
    public:
        vector<string> groupAnagrams(vector<string>& strs) {
            vector<int> sum;
            string arr;
    
            for(int i = 0; i < (int)strs.size(); i++) {     //  O(n*m)
                sum.push_back(0);
                arr = strs[i];
                for(int j = 0; arr[j] != ''; j++)
                    sum[i] += (int)arr[j];
            }
    
            vector<string> mapstrs;
            int len = (int)strs.size();
            for(int i = 0; i < len;) {  //  O(n)
                int temp = sum[i];
                for(int j = 0; j < len; j++)
                    if(temp == sum[j]) {
                        mapstrs.push_back(strs[j]);
                        int k = j;
                        while(k + 1 < len) {
                            strs[k] = strs[k + 1];
                            sum[k] = sum[k + 1];
                            k++;
                        }
                        len = k;
                    }
            }
            return mapstrs;
        }
    };

      时间复杂度为O(n*m),其中n为字符串个数,m为最长字符串中字符的个数。

      但它给的例子是这样的:

         input: ["eat","tea","tan","ate","nat","bat"]

      answer: [["bat"],["nat","tan"],["ate","eat","tea"]]

      所以,完全错误,并没有AC。这里考点是hash。。。所以,没必要这么麻烦。
      
      讨论区看到一个python的solution,感觉不错:
    # https://leetcode.com/problems/group-anagrams/discuss/19202
    class Solution:
    	def groupAnagrams(self, strs):
    		d = {}
    		for w in sorted(strs):
    			key = tuple(sorted(w))
    			d[key] = d.get(key, []) + [w]
    		return d.values()
    
    strs = ['dog','cat','god','tac','atc','oob']
    so = Solution()
    print(so.groupAnagrams(strs))
  • 相关阅读:
    团队介绍的词频统计
    对软件工程这门课的理解与自我期望
    第九次作业-用户使用手册及测试报告
    第8八次作业——系统设计和任务分配
    基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
    结对作业之需求分析与原型设计
    博客与GitHub地址
    Python库
    课程理解
    大数据作业
  • 原文地址:https://www.cnblogs.com/darkchii/p/8279839.html
Copyright © 2011-2022 走看看