当前位置:网站首页>854. 相似度为 K 的字符串 BFS
854. 相似度为 K 的字符串 BFS
2022-07-05 21:30:00 【钰娘娘】
854. 相似度为 K 的字符串
字符串
s1
和s2
是k
相似 的(对于某些非负整数k
),如果我们可以交换s1
中两个字母的位置正好k
次,使结果字符串等于s2
。给定两个字谜游戏
s1
和s2
,返回s1
和s2
与k
相似 的最小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
的一个字谜
做题结果
失败,dfs一直超时,头疼
方法:BFS
1. 起点步数为0,化解为求a变成b的最少步数问题
2. 每次用其中某个相同字符进行填写,挪动到对应位置
3. 找到了直接返回
class Solution {
public int kSimilarity(String s1, String s2) {
Queue<String> queue = new LinkedList<>();
Map<String,Integer> distances = new HashMap<>();
distances.put(s1,0);
queue.offer(s1);
while (!queue.isEmpty()){
String str = queue.poll();
int nextStep = distances.get(str)+1;
for(String next:getNext(str,s2)){
if(next.equals(s2)) return nextStep;
if(!distances.containsKey(next)){
distances.put(next,nextStep);
queue.offer(next);
}
}
}
return 0;
}
private List<String> getNext(String s,String hope){
List<String> ans = new ArrayList<>();
char[] cs1 = s.toCharArray();
char[] cs2 = hope.toCharArray();
int n = cs1.length;
int i = 0;
while (i<n&&cs1[i]==cs2[i]) ++i;
for(int j = i+1; j < n; j++){
if(cs1[j]!=cs2[j]&&cs1[j]==cs2[i]){
swap(cs1,i,j);
ans.add(new String(cs1));
swap(cs1,i,j);
}
}
return ans;
}
private void swap(char[] cs, int i, int j){
char temp = cs[i];
cs[i] = cs[j];
cs[j] = temp;
}
}
边栏推荐
- Gcc9.5 offline installation
- Postgres establish connection and delete records
- AITM 2-0003 水平燃烧试验
- Reading and writing operations of easyexcel
- Dictionary tree simple introductory question (actually blue question?)
- [case] Application of positioning - Taobao rotation map
- MySQL 千万数据量深分页优化, 拒绝线上故障!
- How to prepare for the algorithm interview and answer the algorithm interview questions
- 张丽俊:穿透不确定性要靠四个“不变”
- Chapter 05_ Storage engine
猜你喜欢
Uni app Bluetooth communication
R language [data management]
R语言【数据管理】
KingbaseES V8R3集群维护案例之---在线添加备库管理节点
Making global exception handling classes with aspect
Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»
"Grain mall" -- Summary and induction
Enclosed please find. Net Maui's latest learning resources
Wood board ISO 5660-1 heat release rate mapping test
How to send samples when applying for BS 476-7 display? Is it the same as the display??
随机推荐
Golang(1)|从环境准备到快速上手
MySQL 千万数据量深分页优化, 拒绝线上故障!
有些事情让感情无处安放
selenium 获取dom内属性值的方法
2022-07-03-cka- latest feedback from fans
ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
EasyExcel的讀寫操作
Which securities company is better and which platform is safer for stock account opening
Sophomore personal development summary
CLion配置visual studio(msvc)和JOM多核编译
AITM 2-0003 水平燃烧试验
Sorting out the problems encountered in MySQL built by pycharm connecting virtual machines
leetcode:1139. The largest square bounded by 1
Influence of oscilloscope probe on measurement bandwidth
Clion-MinGW编译后的exe文件添加ico图标
vant 源码解析 event.ts 事件处理 全局函数 addEventListener详解
Is it necessary for bazel to learn
Uni app Bluetooth communication
"Grain mall" -- Summary and induction
WPF gets the control in the datagridtemplatecolumn of the specified row and column in the DataGrid