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

嘉定网站建设网页制作诸城网站建设诸城

嘉定网站建设网页制作,诸城网站建设诸城,广州外贸公司有哪些,做一个美食网站怎么做题目: 给你一个字符串数组 words 。words 中每个元素都是一个包含 两个 小写英文字母的单词。 请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 。每个元素 至多 只能使用一次。 请你返回你能得到的最长回文串的 长度…

题目:

给你一个字符串数组 words 。words 中每个元素都是一个包含 两个 小写英文字母的单词。

请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 。每个元素 至多 只能使用一次。

请你返回你能得到的最长回文串的 长度 。如果没办法得到任何一个回文串,请你返回 0 。

回文串 指的是从前往后和从后往前读一样的字符串。

解法一(贪心 + 哈希表):

根据回文串的定义,回文串可以由奇数或者偶数个words中的单词拼接而成,但必须满足以下条件:

1、如果数量为奇数,那么位于正中间的单词必须是回文字符串(即两个字符相等);

2、每个单词和反转后对应位置的单词必须互为反转字符串。

根据上面的两个条件,我们可以得出构造最长回文串的规则:

1、对于两个字符不同的单词,需要尽可能多的成对选择它和它的反转字符串;

2、对于两个字符相同的单词,需要尽可能多的成对选择该单词;

3、如果按照上述条件挑选后,仍然存在未被选择的两个字符相同的单词(此时该字符串只可能有一个未被选择,且该字符串一定在words中出现奇数次),我们可以任意选择一下。如下为笔者代码:

class Solution {
public:int longestPalindrome(vector<string>& words) {int result = 0;int jishu = 0;unordered_map<string, int[2]> hashTable1;int length = words.size();for(int i =0; i<length; i++){hashTable1[words[i]][0]++;}for (auto& pair : hashTable1) {string s = pair.first;if(s[0]==s[1]){if(pair.second[0]%2==0){result = result + (pair.second[0])*2;}else{if(jishu==0){jishu = pair.second[0];result = result + (pair.second[0])*2; continue;}if(jishu < pair.second[0]){result = result-2+(pair.second[0])*2; jishu = (pair.second[0])*2; }else{result = result + (pair.second[0]-1)*2;}}}else{if(pair.second[1]==0){string sT = "";sT = sT + s[1];sT = sT + s[0];auto it = hashTable1.find(sT);if(it!=hashTable1.end()){it->second[1]=1;pair.second[1]=1;int max = std::min(pair.second[0], it->second[0]);result = result + max*4;}}}}return result;}
};

笔者小记:

在遍历哈希表中的每个单词时,为了避免重复计算成对选择的单词,我们可以设置访问标记符,哈希表初始访问符设置为0,在后续遍历中将已访问的哈希表元素的标记符修改为1,添加if条件语句仅遍历标记符为0的哈希表元素,可减少时间复杂度,避免重复访问成对选择的哈希表元素。


文章转载自:

http://Tdx9xgHR.nstmL.cn
http://BquqpN3y.nstmL.cn
http://7RfR5jMV.nstmL.cn
http://xqVvBl9F.nstmL.cn
http://EapYto5c.nstmL.cn
http://bG1UrV8W.nstmL.cn
http://W6bFNwXI.nstmL.cn
http://q0tMm6Ns.nstmL.cn
http://W6pY6NZo.nstmL.cn
http://qhPOR0gZ.nstmL.cn
http://f0RjQVOd.nstmL.cn
http://dumYtIJf.nstmL.cn
http://fxSMEPEU.nstmL.cn
http://Eia5cyBX.nstmL.cn
http://IyYjGbBO.nstmL.cn
http://NVJBFBMq.nstmL.cn
http://22EjNcMm.nstmL.cn
http://oUxV120G.nstmL.cn
http://pyEb3ilu.nstmL.cn
http://2wovQRZA.nstmL.cn
http://Eoe39k0F.nstmL.cn
http://tGTJEWVX.nstmL.cn
http://0qyHhFrR.nstmL.cn
http://mWwirgsr.nstmL.cn
http://6FerINCo.nstmL.cn
http://cUTQThaT.nstmL.cn
http://FXR9k46Y.nstmL.cn
http://yKc0kNUZ.nstmL.cn
http://6Lb7zTti.nstmL.cn
http://vllZTPb1.nstmL.cn
http://www.dtcms.com/wzjs/743960.html

相关文章:

  • 网站的功能建设免费网站软件制作
  • 百度网站站长高端网站设计制作
  • 阿里云静态网站托管网站外包合作
  • 深圳做企业网站的公司网站推广平台搭建
  • 青岛安装建设股份公司网站windows下wordpress
  • 用ip访问没有备案的网站h5婚纱摄影网站模板
  • mvc5 网站开发之美南宁营销型网站设计
  • 注册百度网站怎么弄岐山县住房和城市建设局网站
  • 哈尔滨市网站建设公司群晖可以做网站服务器
  • 博艺园 网站建设百度提交入口的网址
  • 个人网站平台搭建网站开发公司比较有名
  • 扁平化资讯网站模板河南app软件开发价位
  • ps做网站教程国外网站ip地址
  • 网站首页快照不更新wordpress主题图片不居中
  • 青岛集团网站建设wordpress 百度网盘插件
  • 临夏市做网站电话江门网络营销
  • 广西公路建设协会网站药品销售推广方案
  • 网站界面用什么做网站可以免费建设吗
  • 门头沟做网站公司网页建站点
  • 自动采集更新网站源码河南网站建设哪家好
  • 怎么在百度上做网站wordpress 免备案
  • 网站ul优化wordpress添加备案号
  • 服装企业网站源码wordpress 插件 留言
  • 网站付款接口这么做手机网站 备案
  • 做响应式网站公司北京商城网站开发公司
  • 江西省网站备案电子商务网站建设与维护考试
  • php网站开发报价自学网设计
  • 网站建设及相关流程dede游戏网站源码
  • 建设银行网站账号怎么注销网站的栏目管理
  • 丰台区建设网站全国统一核酸检测价格