leetcode日记(38)字母异位词分组

最开始的想法是创建vector<vector<string>> result,然后遍历strs中字符串,遍历result中vector,比较vector中第一个string和strs中string,若为字母异位词,则加入vector,若无,则创建新的vetcor加入result……

判断字母异位词的方法是建立长度为24,初始化全为0的string,每有一字母就将对应位置加一……(后来才发现有每个字母数量不能大于9的bug)

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> result;
        int n=strs.size();
        for(int i=0;i<n;i++){
            int m=result.size();
            int j=0;
            for(j;j<m;j++){
                vector<string> a=result[j];
                if(equal(a[0],strs[i])){
                    result[j].push_back(strs[i]);
                    break;
                }
            }
            if(j==m){
                vector<string> ss;
                ss.push_back(strs[i]);
                result.push_back(ss);
            }
        }
        return result;
    }
    bool equal(string s1,string s2){
        int n1=s1.size();
        int n2=s2.size();
        if(n1!=n2) return 0;
        string ss1(25,'0');
        for(int i=0;i<n1;i++){
            ss1[s1[i]-97]++;
        }
        string ss2(25,'0');
        for(int i=0;i<n2;i++){
            ss2[s2[i]-97]++;
        }
        if(ss1==ss2) return 1;
        else return 0;
    }
};

结果是时间超限,看了答案才知道有更好的方法,那就是用map,判断字母异位词也可以直接对string使用sort后进行比较,简洁很多

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string,vector<string>> mp;
        int n=strs.size();
        for(int i=0;i<n;i++){
            string str=strs[i];
            sort(str.begin(),str.end());
            mp[str].push_back(strs[i]);
        }
        vector<vector<string>> result;
        for(auto i=mp.begin();i!=mp.end();i++){
            result.push_back(i->second);
        }
        return result;
    }
};

相关推荐

  1. leetcode-字母分组

    2024-07-16 01:28:03       52 阅读
  2. LeetCode 49 字母分组

    2024-07-16 01:28:03       61 阅读
  3. LeetCode49字母分组

    2024-07-16 01:28:03       29 阅读
  4. leetcode_49.字母分组

    2024-07-16 01:28:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:28:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:28:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:28:03       62 阅读
  4. Python语言-面向对象

    2024-07-16 01:28:03       72 阅读

热门阅读

  1. ArkTS学习笔记_封装复用之@builderParam装饰器

    2024-07-16 01:28:03       18 阅读
  2. sklearn基础教程:掌握机器学习入门的钥匙

    2024-07-16 01:28:03       20 阅读
  3. Kubernetes面试整理-Helm是什么?

    2024-07-16 01:28:03       19 阅读
  4. 去除重复数字

    2024-07-16 01:28:03       22 阅读
  5. Websocket发一条阻塞了,后面的消息会怎么样

    2024-07-16 01:28:03       22 阅读
  6. 网络编程part2

    2024-07-16 01:28:03       22 阅读