854. 相似度为 K 的字符串(每日一难phase2--day20)
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)相关推荐
- 854. 相似度为 K 的字符串 BFS
854. 相似度为 K 的字符串 字符串 s1 和 s2 是 k 相似 的(对于某些非负整数 k ),如果我们可以交换 s1 中两个字母的位置正好 k 次,使结果字符串等于 s2 . 给定两个字谜游戏 ...
- 图解LeetCode——854. 相似度为 K 的字符串(难度:困难)
一.题目 对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次,能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k . 给你两个字母异位词 s1 和 s2 , ...
- LeetCode 854 相似度为K的字符串
题目描述 如果可以通过将 A 中的两个小写字母精确地交换位置 K 次得到与 B 相等的字符串,我们称字符串 A 和 B 的相似度为 K(K 为非负整数). 给定两个字母异位词 A 和 B ,返回 A ...
- Python 轻松解决从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(对比用库和不用库的方法)
文章目录 一.问题说明 二.解决方法 一.问题说明 问题来源:粉丝的提问 从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合(对比用库和不用库的方法) 二.解决方法 iter ...
- 每日长难句打卡Day23
每日长难句打卡Day23 参考译文:特别是,他们呼吁与西部各州政府(通常不满联邦政府的行动)以及私人土地所有者(控制着约95%的草原榛鸡栖息地)形成更紧密的合作关系.
- 每日长难句打卡Day22
每日长难句打卡Day22 好久不见,王同学回来了,以后还是坚持每日一句吧,不能偷懒!!! 参考译文:学生在进入大学之前也会从一些有关编码的知识中获益,因为在大学里,计算机科学入门课程都排得满满当当,这 ...
- 句句真研—每日长难句打卡Day21
句句真研-每日长难句打卡Day21 参考译文:"少即是多"这句话实际上是首先由一位名叫路德维希●密斯凡德罗的德国建筑家推广开来的,像其他与包豪斯建筑学院相关的设计师一样,他在二战之 ...
- 句句真研—每日长难句打卡Day20
句句真研-每日长难句打卡Day20 参考译文:我们往往将二战结束后的几十年看做是一个繁荣与增长的时代,数以百万的士兵们返回家乡,他们在<退伍军人权利法案>的帮助下去上大学,在婚姻登记处排队 ...
- 句句真研—每日长难句打卡Day19
句句真研-每日长难句打卡Day19 参考译文:这场席卷整个新闻编辑部的旋风伤及每个人,但大部分损失集中于报纸内容最缺乏特色的部门
- 句句真研—每日长难句打卡Day18
句句真研-每日长难句打卡Day18 参考译文:但研究者认为,如果外部董事在坏消息爆发前就已离开公司,那么他们会更容易避免声誉受损,即便历史记录显示'"错误行为形成时,董事们尚在其职" ...
最新文章
- python 教程 网盘-python教程网盘
- 实现table鼠标移动改变table行背景色
- python函数的传递方式有哪些_Python全栈工程师(函数的传参)
- 10g中如何修改数据库字符集-2
- C++:计算选手最终得分
- 整理好的200多java面试题,可用于机器学习
- JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
- (待解决!)jmx在PetClinic中的应用
- python的哲学内容_python 哲学或者说文化
- 给程序员的几条建议,精彩配图
- go遍历结构体(struct)字段对应的值,切片(slice),字典(map)
- atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
- 因为机遇,不会轻易悲伤
- MySQL导入sql文件的三种方法
- 小程序毕设作品之微信校园洗衣小程序毕业设计成品(6)开题答辩PPT
- Global and Local Enhancement Networks for Paired and Unpaired Image Enhancement
- 纯手工焊接七彩圣诞树
- 【数据结构与算法】学习笔记-《算法笔记》-7
- IntelliJ IDEA 官方网站
- 搜索引擎网站:网络和安全规划一个都不能少