当前位置: 首页 > news >正文

阿克苏网站建设成都seo推广

阿克苏网站建设,成都seo推广,m8 wordpress主题,品牌建设与市场推广2.字母异位词分组 题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan&q…

2.字母异位词分组

题目描述:

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

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

给定的是vector<string>类型的容器,输出的是vector<vector<string>>类型的容器。

class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> anagrams;for(const string& str:strs){string sortedstr = str;sort(sortedstr.begin(),sortedstr.end());anagrams[sortedstr].emplace_back(str);}vector<vector<string>> result;for(const auto&pair:anagrams){result.emplace_back(pair.second);}return result;
}
};

实现逻辑:使用for循环遍历strs,对每一个strs[i]对应的单词进行sort排序,如tea和eat都会被排序为aet,对每个单词排序后的结果作为键,如果该键不存在于哈希表中,则创建新元素<key,value>,如果键已存在,则将新单词加入键所对应的vector中,比如开始遍历实例中给的vector容器时,eat和tea经过排序后,都对应aet这个键,遍历eat时,哈希表中开始创建了<aet,{eat}>,当遍历到tea时,哈希表就成了<aet,{eat,tea}>。而后再对遍历完所有strs后的哈希表进行遍历,将其所有元素中存在的值都加入result中,最后result就会成为[["bat"],["nat","tan"],["ate","eat","tea"]]的形式,那么只需返回result就行。

代码解释

unordered_map<string,vector<string>> anagrams;创建string,vector<string>类型的哈希表anagrams;

for(const string& str:strs)使用for循环对strs中的每一个元素都取别名,const string& str:strs是C++中对容器元素进行遍历的代码。

sort(sortedstr.begin(),sortedstr.end());使用sort对sortedstr进行排序,这里是把sortedstr也当作了一个容器,不过是char类型,按照begin()和end()迭代器作为sort的起始和终结条件。如果sortedstr对应eat,排序后,它就成为aet。

anagrams[sortedstr].emplace_back(str);,按照键:sortedstr往哈希表中插入元素str,其实此时sortedstr也就是str所对应的排序好后的键,string sortedstr = str;这也就是为什么要加这一句代码。

----anagrams[sortedstr]:首先尝试在 anagrams 哈希表中查找键为 sortedstr 的元素。如果找到,则返回该键对应的 vector<string>;如果没有找到,则会创建一个新的 vector<string> 并将其与 sortedstr 键关联起来,然后返回这个新的向量。

----.emplace_back(str):这是在向由 anagrams[sortedstr] 返回的向量中添加元素的一种方式。emplace_back() 方法与push_back() 方法类似,都是向容器末尾添加元素。但是,emplace_back() 更加高效,因为它是在容器的末尾直接构造对象,而不是先创建对象再复制或移动它进入容器。这意味着如果 emplace_back() 的参数正好匹配要插入元素的构造函数参数,则可以直接在容器的存储空间上进行构造,避免不必要的拷贝或移动操作。

unordered_map<string,vector<string>>  类型的容器 anagrams。这里的pair 实际上代表 anagrams 中的每一个键值对(即每一个元素),其中 pair.first 对应键(在这个场景下是排序后的字符串),而 pair.second 对应值(即一组异位词组成的 vector<string>)。比如经过前面的代码,那么anagrams中元素的存在形式可能是这样的 [{abt,["bat"]},{ant,["nat","tan"]},{aet,["ate","eat","tea"]}],那么每一次遍历pair.second就对应着["bat"]、["nat","tan"]、["ate","eat","tea"]这几个容器。,而后将其插入至result中。

最后将result返回即可。

http://www.yidumall.com/news/23932.html

相关文章:

  • 做原油看哪个网站发帖推广平台
  • 网站系统维护一般多久重庆搜索引擎seo
  • 广州大学生网页设计大赛网络优化工程师有多累
  • 视频直播app开发网站企业网站设计制作
  • 北京如何做网站哈尔滨网络推广优化
  • 网站seo新手专业网络推广软件
  • 做网站色弱可以吗域名注册要多少钱
  • 自己做网站挣钱不微营销平台系统
  • 成品小说网站源码如何检测网站是否安全
  • 邢台163最新交友seo免费优化软件
  • 山东官方网站建设seo优化外包
  • 如何做高并发网站的架构设计18种最有效推广的方式
  • 下载建网站产品推广活动策划方案
  • 用bootstrap做的手机推销网站模板网络营销的具体形式种类
  • 石家庄网站快速备案域名比价网
  • 推广策划公司百度关键词优化多少钱
  • 哪个网站做logo赚钱百度关键词排名用什么软件
  • 中国现货交易网官网seo标题优化是什么意思
  • 建网站最专业关键词搜索引擎优化推广
  • 兰州电商平台网站建设优化大师win7官方免费下载
  • 网站优化的作用今日搜索排行榜
  • 软件和网站开发seo数据
  • 网站建设与维护制度靠谱的拉新平台
  • 自动化优化系统网站建设网上销售有哪些方法
  • 做外链哪个网站好成都seo推广
  • 青峰网站建设seo做关键词怎么收费的
  • 武汉网站建设的制作网页
  • 开发网站 语言百度问答下载安装
  • 做网站收多少钱公司软文代写
  • 武汉建站公司哪个好广告公司名字