map改变一个字母是什么_组合总和 leetcode

map改变一个字母是什么_组合总和 leetcode原题链接给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[ [“ate”,”eat”,”tea”], [“nat”,”tan”], [“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。tclass Solution {public: vector<vector<string>> g

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

说明:

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

题解

  1. 先对单词排序,然后单词相同的放入同一个vector中,所以时间复杂度为O(nmlogm)
class Solution { 
   
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) { 
   
        map<string,vector<string> >a;
        for(int i = 0;i < strs.size();i ++){ 
   
            string t = strs[i];
            sort(t.begin(),t.end());
            if(a.find(t) == a.end()){ 
   
                vector<string> tt;
                a[t] = tt;
            }
            a[t].push_back(strs[i]);
        }
        vector<vector<string> >res;
        for(map<string,vector<string> >::iterator it = a.begin();it != a.end();it ++){ 
   
            res.push_back(it->second);
        }
        return res;
    }
};
  1. 统计每个单词中字符出现的次数,然后把字符对应次数一样的放入同一个vector中,时间复杂度为O(n(k+ m)) k==26
class Solution { 
   
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) { 
   
        map<string,vector<string> >m;
        vector<vector<string> >res;
        int num[26] = { 
   0};
        for(auto &word : strs){ 
   
            memset(num,0,sizeof num);
            for(int i = 0;i < word.size();i ++){ 
   
                num[word[i] - 'a'] ++;
            }
            string t = "";
            for(int i = 0;i < 26;i ++){ 
   
                if(num[i] != 0){ 
   
                    t += (to_string(i + 'a') + to_string(num[i]));
                }
            }
            m[t].push_back(word);
        }
        for(auto &a : m)res.push_back(a.second);
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168734.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 下午3:00
下一篇 2022年8月8日 下午3:00


相关推荐

  • 模型选择–网格搜索

    模型选择–网格搜索首先使用训练数据训练模型,然后使用交叉验证数据挑选最佳模型,最后使用测试数据测试模型是否完好。下面举一个训练逻辑回归模型的例子。假设有四个模型,第一个是一次模型,然后二次,三次,四次模型。我们使用训练数据训练,并算出多项式的斜率和系数等等。然后使用交叉验证数据计算所有这些模型的F1分数,然后选择F1得分最高的模型,最后使用测试数据确保模型效果完好。算法的参数就是多项式的系数,但是多…

    2022年8月30日
    6
  • CSS 颜色渐变生成器

    CSS 颜色渐变生成器手工挑选颜色来制作颜色渐变需要设计经验和对色彩和谐的良好理解 如果您需要背景或 UI 元素的渐变 但又没有足够的信心自己处理任务 或者如果您很着急 则 Colorgradien 能帮助到您 颜色渐变生成器其由颜色渐变算法提供支持 生成器根据您选择的颜色创建均衡的渐变 有四种不同风格的渐变 从微妙到珍珠母效果 再到浓烈的深色渐变 您可以使用滑块调整渐变 一旦您

    2026年3月18日
    2
  • 素数环问题(回溯法)

    素数环问题(回溯法)素数环是一个计算机程序问题 指的是将从 1 到 n 这 n 个整数围成一个圆环 若其中任意 2 个相邻的数字相加 结果均为素数 那么这个环就成为素数环 现在要求输入一个 n 求 n 个数围成一圈有多少种素数环 规定第一个数字是 1 include lt iostream gt include lt math h gt usingnamespa intn 0 inta 100

    2026年3月19日
    2
  • cvCircle and cvRectangle

    cvCircle and cvRectangleOpenCV中的cvCircle和cvRectangle函数void cvCircle(CvArr* img,CvPoint center,int radius,CvScalar color,int thickness=1,int lineType=8,int shift=0)Drawsacircle.Parameters:img –Image

    2022年7月24日
    13
  • 智谱多模态系列:GLM-4.5V 环境配置与本地部署

    智谱多模态系列:GLM-4.5V 环境配置与本地部署

    2026年3月12日
    3
  • Excel数据快速导入mysql的几个办法

    Excel数据快速导入mysql的几个办法有时候需要批量插入一批数据到数据库 有很多种办法 这里我用到过三种办法 1 通过 Excel 直接生成 insert 语句 CONCATENATE insertintoai pingfen fengcai id order n department subject n teacher name values A1 B1 amp

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号