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/168889.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 子网划分和计算方法(附习题详解)

    子网划分和计算方法(附习题详解)一.子网划分作用1.计算网络号,通过网络号选择正确的网络设备连接终端设备1)清楚IP地址四点段点分十进制数和子网掩码,对应的网络号是什么2)交换机是用来连接相同网络的设备,路由器是用来连接不同网段的设备网络号一样的,即在相同网段,网络号不一样的,即不同网段3)计算方法把十进制数的IP地址换算成二进制数,把子网掩码也由十进制数换算成二进制数,两对二进制数对齐做“与”运算,即可得出网络号。2.根据网络的规模,可以对局域网(内网)进行网络地址规划二.IP地址格…

    2022年6月27日
    33
  • app抓包工具_【旧版IPA抓包教程2】超便捷苹果旧版本APP抓包/轻松抓取你想要的版本,旧版app任意下载…

    app抓包工具_【旧版IPA抓包教程2】超便捷苹果旧版本APP抓包/轻松抓取你想要的版本,旧版app任意下载…之前呢就已经给大家发过一期抓包旧版ipa的教程,果然方法多种多样,今天又给大家带来一个更加简便快捷的的抓包软件,过程很简单,是个正常人都能学会,赶紧学起来吧~首先还是电脑一台,包含AppStore的iTunes的一个,旧版抓包程序一个,这次所需的工具就是多出来一个⛏镐子一样的玩意,这个程序是免费的,网上应该也能找到。也可以在文章末尾找到关键词回复下载。首先打开iTunes并登…

    2022年5月7日
    709
  • js – form表单提交不刷新

    大家已经发现了,当我们点击submit提交form表单的时候,他会刷新一次,如果不想它刷新的话有下面两种方法:利用iframe我们可以利用一个隐藏的iframe来实现,主要是我们把提交目标放到一个隐藏的iframe里,然后让iframe提交数据(ps:这个未实测,仅仅是网上提供的,我记录一下.以后遇到或者会试一下吧)<formaction=”…

    2022年4月18日
    61
  • JVM 垃圾回收机制主要原理

    JVM 垃圾回收机制主要原理对于垃圾JVM的垃圾回收机制这里我们称为GC,众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序,这里我们先初步讲解一下GC的工作原理首先我们在讲解之前我们需要了解一下JVM内存运行时数据区的三个重要的地方堆(heap)

    2022年4月30日
    37
  • pytham激活码_通用破解码

    pytham激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    53
  • SQLServer 延迟事务持久性

    SQLServer 延迟事务持久性

    2021年11月26日
    45

发表回复

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

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