854. 相似度为 K 的字符串

对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次,能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k 。

给你两个字母异位词 s1 和 s2 ,返回 s1 和 s2 的相似度 k 的最小值。

示例 1:

输入:s1 = “ab”, s2 = “ba”
输出:1

示例 2:

输入:s1 = “abc”, s2 = “bca”
输出:2

提示:

1 <= s1.length <= 20
s2.length == s1.length
s1 和 s2 只包含集合 {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’} 中的小写字母 s2 是 s1 的一个字母异位词

解析:

  • 以s1为基准,变换s2让两者相同
  • s2中对应字符如果和s1中不同,就需要s2与后边与s1当前字符相同的字符交换
  • 对应字符可能有很多,通过dfs将所有字符找出即可
  • 例如:s1 = “abcbade”,s2=“caabbde”;
  • a ,c不同在s2中找出所有可以交换的a交换,将所有可能遍历。
  • 剪枝看具体代码
class Solution {public:int res=INT_MAX;// 交换s2中两个字符void swap(string& s,int i,int j){char t=s[i];s[i]=s[j];s[j]=t;}// 对比每个字符找出最小值void dfs(string& s1,string& s2,int start,int cur ){// 剪枝if(cur>=res) return;// 最后一个字符不用判断,肯定相同if(start==s1.size()-1){res=min(res,cur);return;}// 如果当前字符不同if(s2[start]!=s1[start]){for(int j=start+1;j<s1.size();j++){if(s1[start]==s2[j]){swap(s2,start, j); // 交换dfs(s1,s2,start + 1, cur + 1);swap(s2,start, j);                 }} }else dfs(s1,s2,start + 1, cur); // 当前字符相同}int kSimilarity(string s1, string s2) {dfs(s1,s2,0,0);return res;}
};

854. 相似度为 K 的字符串(每日一难phase2--day20)相关推荐

  1. 854. 相似度为 K 的字符串 BFS

    854. 相似度为 K 的字符串 字符串 s1 和 s2 是 k 相似 的(对于某些非负整数 k ),如果我们可以交换 s1 中两个字母的位置正好 k 次,使结果字符串等于 s2 . 给定两个字谜游戏 ...

  2. 图解LeetCode——854. 相似度为 K 的字符串(难度:困难)

    一.题目 对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次,能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k . 给你两个字母异位词 s1 和 s2 , ...

  3. LeetCode 854 相似度为K的字符串

    题目描述 如果可以通过将 A 中的两个小写字母精确地交换位置 K 次得到与 B 相等的字符串,我们称字符串 A 和 B 的相似度为 K(K 为非负整数). 给定两个字母异位词 A 和 B ,返回 A ...

  4. Python 轻松解决从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(对比用库和不用库的方法)

    文章目录 一.问题说明 二.解决方法 一.问题说明 问题来源:粉丝的提问 从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合(对比用库和不用库的方法) 二.解决方法 iter ...

  5. 每日长难句打卡Day23

    每日长难句打卡Day23 参考译文:特别是,他们呼吁与西部各州政府(通常不满联邦政府的行动)以及私人土地所有者(控制着约95%的草原榛鸡栖息地)形成更紧密的合作关系.

  6. 每日长难句打卡Day22

    每日长难句打卡Day22 好久不见,王同学回来了,以后还是坚持每日一句吧,不能偷懒!!! 参考译文:学生在进入大学之前也会从一些有关编码的知识中获益,因为在大学里,计算机科学入门课程都排得满满当当,这 ...

  7. 句句真研—每日长难句打卡Day21

    句句真研-每日长难句打卡Day21 参考译文:"少即是多"这句话实际上是首先由一位名叫路德维希●密斯凡德罗的德国建筑家推广开来的,像其他与包豪斯建筑学院相关的设计师一样,他在二战之 ...

  8. 句句真研—每日长难句打卡Day20

    句句真研-每日长难句打卡Day20 参考译文:我们往往将二战结束后的几十年看做是一个繁荣与增长的时代,数以百万的士兵们返回家乡,他们在<退伍军人权利法案>的帮助下去上大学,在婚姻登记处排队 ...

  9. 句句真研—每日长难句打卡Day19

    句句真研-每日长难句打卡Day19 参考译文:这场席卷整个新闻编辑部的旋风伤及每个人,但大部分损失集中于报纸内容最缺乏特色的部门

  10. 句句真研—每日长难句打卡Day18

    句句真研-每日长难句打卡Day18 参考译文:但研究者认为,如果外部董事在坏消息爆发前就已离开公司,那么他们会更容易避免声誉受损,即便历史记录显示'"错误行为形成时,董事们尚在其职" ...

最新文章

  1. python 教程 网盘-python教程网盘
  2. 实现table鼠标移动改变table行背景色
  3. python函数的传递方式有哪些_Python全栈工程师(函数的传参)
  4. 10g中如何修改数据库字符集-2
  5. C++:计算选手最终得分
  6. 整理好的200多java面试题,可用于机器学习
  7. JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
  8. (待解决!)jmx在PetClinic中的应用
  9. python的哲学内容_python 哲学或者说文化
  10. 给程序员的几条建议,精彩配图
  11. go遍历结构体(struct)字段对应的值,切片(slice),字典(map)
  12. atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
  13. 因为机遇,不会轻易悲伤
  14. MySQL导入sql文件的三种方法
  15. 小程序毕设作品之微信校园洗衣小程序毕业设计成品(6)开题答辩PPT
  16. Global and Local Enhancement Networks for Paired and Unpaired Image Enhancement
  17. 纯手工焊接七彩圣诞树
  18. 【数据结构与算法】学习笔记-《算法笔记》-7
  19. IntelliJ IDEA 官方网站
  20. 搜索引擎网站:网络和安全规划一个都不能少

热门文章

  1. VB.NET (VB2008)的免费下载网址
  2. postman下载安装汉化及使用
  3. windows反馈中心服务器,Windows 管理中心入门
  4. PMP常考知识点整理
  5. 【白盒测试技术之-junit】
  6. Python渗透测试工具合集
  7. 伺服受到干扰?丢脉冲?到底是什么现象?请看这里。。。。
  8. Matlab:实现菲涅尔矩形孔衍射仿真
  9. 10年老台式机4分钟攻破量子加密算法,此前12年无人破解,核心原理来自25年前...
  10. 计算机考试的话语,鼓励别人考试的句子