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

pc 网站建设工业设计 做自己的网站 知乎

pc 网站建设,工业设计 做自己的网站 知乎,无锡梅村网站建设,半天班3500急招店员目录 题目: 题解: 详细题解 题目: 如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb 操作 2&#xff1…

目录

题目:

题解:

详细题解


题目:

如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :

  • 操作 1:交换任意两个 现有 字符。
    • 例如,abcde -> aecdb
  • 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
    • 例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )

你可以根据需要对任意一个字符串多次使用这两种操作。

给你两个字符串,word1 和 word2 。如果 word1  word2 接近 ,就返回 true ;否则,返回 false 

示例 1:

输入:word1 = "abc", word2 = "bca"
输出:true
解释:2 次操作从 word1 获得 word2 。
执行操作 1:"abc" -> "acb"
执行操作 1:"acb" -> "bca"

示例 2:

输入:word1 = "a", word2 = "aa"
输出:false
解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

示例 3:

输入:word1 = "cabbba", word2 = "abbccc"
输出:true
解释:3 次操作从 word1 获得 word2 。
执行操作 1:"cabbba" -> "caabbb"
执行操作 2:"caabbb" -> "baaccc"
执行操作 2:"baaccc" -> "abbccc"

提示:

  • 1 <= word1.length, word2.length <= 105
  • word1 和 word2 仅包含小写英文字母

题解:

class Solution {
public:bool closeStrings(string word1, string word2) {//存储各个字符出现的频率vector<int> count1(26),count2(26);//因为一共就26个字母,所以长度26即可for(char c: word1){count1[c-'a']++;}for(char c: word2){count2[c-'a']++;}//验证是否字符一样for(int i=0;i<26;i++){if(count2[i]>0&&count1[i]==0 ||count2[i]==0&&count1[i]>0){return false;}}//字符一样之后,验证是否有相同的次数出现sort(count1.begin(),count1.end());sort(count2.begin(),count2.end());return count1==count2;}
};

详细题解

刚开始其实我看到这个题目是懵的,因为我忘了c++关于字符串的遍历还有统计啥的方法咋做了哈哈哈,所以就看了官方题解。其实我觉得官方题解非常的妙。

对于这个题我觉得理解到底什么叫两个字符串接近是关键,对于题目的两个操作其实说人话就是

1.这两个字符串出现的字符必须得一样

2. 字符的出现频次是要一样的(这里的意思不是说相同字符出现的频次必须要一样,而是说只要有跟它一样的频次的字符出现在另一个字符串里就可以)

所以在解答这个题的时候同样可以分成两部分

首先我们使用两个数组来分别存储不同字符出现的频率,其中下标来表示字符的ASCII码,元素来表示频率

//存储各个字符出现的频率vector<int> count1(26),count2(26);//因为一共就26个字母,所以长度26即可for(char c: word1){count1[c-'a']++;}for(char c: word2){count2[c-'a']++;}

然后可以来判断两个字符串出现的字符是否一样了 ,因为我们用下标来表示字符,元素来表示出现的次数,那么对于同样下标的如果有一个数组元素为0,那说明他对应的字符串是没有该元素的,所以也就是两个字符串中字符不一样,也就是不接近,所以也就可以直接返回false了

//验证是否字符一样for(int i=0;i<26;i++){if(count2[i]>0&&count1[i]==0 ||count2[i]==0&&count1[i]>0){return false;}}

通过该判断之后,我们要判断的是是否有相同频次出现,那这个时候,我们就可以进行排序,排序完看看这两个count数组是否一样即可,如果不一样,比如说count1里有5,但是count2里并没有,那么说明字符串1里有一个字符出现了5次,二字符串2里并没有出现5次的字符,这也会不符合接近的定义,所以返回false,如果完全一样,那么就返回true

 //字符一样之后,验证是否有相同的次数出现sort(count1.begin(),count1.end());sort(count2.begin(),count2.end());return count1==count2;

后话:希望我下次再次做这个题的时候,还能像现在这样思路清晰~


文章转载自:

http://9pyASf68.ysbhj.cn
http://iYsafeSQ.ysbhj.cn
http://WCx8dagx.ysbhj.cn
http://ChdyLSVf.ysbhj.cn
http://3Ue9YO5I.ysbhj.cn
http://cSsuor5E.ysbhj.cn
http://gkWFwlAx.ysbhj.cn
http://rkwgd5eL.ysbhj.cn
http://6ovJpuw1.ysbhj.cn
http://gQOpecUl.ysbhj.cn
http://cVUMQlp6.ysbhj.cn
http://MpkXvMFd.ysbhj.cn
http://vf1ZUAW5.ysbhj.cn
http://u6KmTw0Q.ysbhj.cn
http://WzwRSBZM.ysbhj.cn
http://WHuHP6F9.ysbhj.cn
http://ZcMY9gns.ysbhj.cn
http://lVtbZuJZ.ysbhj.cn
http://RWD2U1h0.ysbhj.cn
http://pZ2wh5Ao.ysbhj.cn
http://3RWmTDYu.ysbhj.cn
http://xVCcDSeW.ysbhj.cn
http://LAXVEW7m.ysbhj.cn
http://9UYh3Xgl.ysbhj.cn
http://5ZMJfbPa.ysbhj.cn
http://4Ij27aox.ysbhj.cn
http://lhtiaV5i.ysbhj.cn
http://mjAWQnee.ysbhj.cn
http://SPTvGzRi.ysbhj.cn
http://embgCv57.ysbhj.cn
http://www.dtcms.com/wzjs/693739.html

相关文章:

  • php 设置网站根目录wordpress主题 新闻
  • 网站开发的成本沈阳网站建设联系方式
  • 建筑公司网站应该则么做智慧团建网站登陆
  • 网站建设课程报告论文网站搭建公司排行
  • 企业网站运营推广难做吗快影
  • 检测网站打开速度wordpress 3.7
  • 餐饮公司 网站建设中国建筑协会官网
  • 广州建设教育网站少儿戏曲知识 网站建设
  • 揭阳网站建设策划方案免费网站转app
  • 手机app制作费用优化游戏的软件
  • 盈佳国际天天做赢家网站关于苏宁易购网站建设的不足之处
  • 石家庄心雨网站建设wordpress 文章字符数
  • 衡水做网站公司北京网站建设最新消息
  • cnzz网站建设教学建设银行官方网站登录
  • 制作展示型网站公司哪家好学用php做网站
  • 湖南易图做推广送网站网站建设 怎么跑业务
  • 江苏省建设工程竣工备案网站门户网站建设要多少钱
  • 哪些网站是python做的国际最好的摄影作品网站
  • 搭建电商网站物流专线做网站
  • 电影网站的代理怎么做贵阳设计网站
  • 大学生网站建设实训报告平昌移动网站建设
  • 七星彩网站开发广州天河酒店网站建设
  • 广州建设网站企业普宁房产网
  • 山东省住房和城市建设厅网站信息管理网站开发实验报告
  • 互联网站产品开发的流程网站开发者调试模式
  • flash网站后台有哪个网站可以学做面条开面馆
  • 网站建设加数据库人力资源网站建设方案
  • 单位门户网站建设工作建议制作书签的方法和步骤
  • 微网站建设服务商wordpress实现用户中心
  • 电商网站建设合同怎么做网站播放器