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

长沙望城区政府门户网站东莞网络营销渠道

长沙望城区政府门户网站,东莞网络营销渠道,wordpress文章图片slide,企业网站配色绿色配什么色合适题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate&quo…

题目描述:

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

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

示例 1:

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

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

通过次数

542.1K

提交次数

799.9K

通过率

67.8%

思路和题解:

字母异位词里面的的字母都是相同的,只是排列顺序不同,如果我们把每个单词都排序一遍,排序后字母异位词是相等的,然后再将字符串数组排序一边,此时字母异位词就挨在一起了,我们只要把连在一起并且排序后相等的两个字母放进一个组合里,最后把所有的组合返回即可。听不懂的话我举个例子,就拿样例一来说strs=["eat","tea","tan","ate","nat","bat"],把每个单词排序得到a=[aet, aet ,ant ,aet ,ant ,abt],再将字符串数组a排序,排序的时候连带strs一起交换得到strs=[bat tea ate eat nat tan]   a=[abt aet aet aet ant ant] ,即

第一次将每个单词排序
strs=[eat tea tan ate nat bat] a=[aet aet ant aet ant abt] 
第二次将a中单词作为一个整体排序
strs=[bat tea ate eat nat tan] a=[abt aet aet aet ant ant] 

来看我的代码:

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> ans;vector<string> a;int n=strs.size();for(int i=0;i<n;i++){//先对原始字符串数组中每一个字符串进行排序a.push_back(strs[i]);sort(a[i].begin(),a[i].end());}// //test1// for(int i=0;i<n;i++)//     cout<<strs[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)//     cout<<a[i]<<" ";// cout<<endl;// 再对字符串数组a排序,strs跟着换for(int i=0;i<n-1;i++){int k=i;for(int j=i+1;j<n;j++){if(a[j]<a[k]) k=j;}string temp=a[i];a[i]=a[k],a[k]=temp;temp=strs[i],strs[i]=strs[k],strs[k]=temp;}// //test2// for(int i=0;i<n;i++)//     cout<<strs[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)//     cout<<a[i]<<" ";// cout<<endl;//这个时候字母异位词就黏在一起了int pos=0,i=0;while(pos<n){vector<string> group;group.emplace_back(strs[pos]);while(pos<n-1&&a[pos]==a[pos+1]){pos++;group.emplace_back(strs[pos]);}pos++;ans.emplace_back(group);}return ans;}
};

改进:

上述方法的核心是将所有的字母异位词放在一起(指位置相邻),然后再将相邻且排序后相等的字符串放在一个字符串数组里。其实将排序后的一个string作为键,对应的排序之前的string作为值放入一个map里,我们就可以直接把所有的字母异位词放在一起(不仅仅是字母异位词不是相邻,而且非字母异位词之前也分开了)。看代码:

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

运行:

http://www.dinnco.com/news/6225.html

相关文章:

  • 固定ip做网站怎么备案谷歌搜索引擎363
  • 推广思路及执行方案成都市seo网站公司
  • 国内做外贸的网站品牌建设的五个要素
  • php网站模板怎么安装情感营销
  • 房地产网站建设与优化分析百度分析
  • 网站建设活动计划晚上网站推广软件免费版
  • wordpress一栏主题百度seo怎么做
  • 需要做网站设计的公司网站优化联系
  • 电商网站开发设计方案有哪些会计培训班一般多少钱
  • 什么是网站国内高速空间微信群推广网站
  • 域名与空间购买后怎么做网站爱站网长尾关键词挖掘查询工具
  • 设计一个电子商务网站乔拓云网站注册
  • 深圳企业做网站公司哪家好公司做网页要多少钱
  • 唐山网站建设电话市场营销策划包括哪些内容
  • 网站设计培训学校有哪些网站优化公司怎么选
  • 网站建设丶金手指a排名15百度公司官网
  • 网站建设技巧亅金手指排名27重庆二级站seo整站优化排名
  • o2o商城网站系统开发防疫优化措施
  • app开发公司网站1688的网站特色
  • 政府网站建设运维ks免费刷粉网站推广马上刷
  • 网站关键词的分类惠州百度seo哪里强
  • 学装修设计去哪里学深圳seo推广
  • asp网站源码下载今日油价92汽油
  • 如何做好商务网站的运营怎么做网站服务器多少钱一年
  • 专业做网站价格公司网站设计公司
  • 晋城市 制作网站网站广告收费标准
  • 网站广告连接如何做东莞百度推广优化排名
  • 万网ipseo技巧分享
  • 广东省做农业网站销售的公司汽车品牌推广策划方案
  • 经营性质的网站搜索引擎优化概述