当前位置:网站首页>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 <= 20s2.length == s1.lengths1和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;
}
}边栏推荐
- Clickhouse copy paste multi line SQL statement error
- Clion configures Visual Studio (MSVC) and JOM multi-core compilation
- Parker驱动器维修COMPAX控制器维修CPX0200H
- Enclosed please find. Net Maui's latest learning resources
- selenium 获取dom内属性值的方法
- 递归查询多级菜单数据
- EasyExcel的读写操作
- 显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??
- Sequence alignment
- Aitm 2-0003 horizontal combustion test
猜你喜欢

Xlrd common operations

Add ICO icon to clion MinGW compiled EXE file

【案例】元素的显示与隐藏的运用--元素遮罩

Clion configures Visual Studio (MSVC) and JOM multi-core compilation

Clickhouse copy paste multi line SQL statement error

Teach yourself to train pytorch model to Caffe (I)

Parker driver maintenance COMPAX controller maintenance cpx0200h

EN 438-7建筑覆盖物装饰用层压板材产品—CE认证

PVC plastic sheets BS 476-6 determination of flame propagation properties

EasyExcel的讀寫操作
随机推荐
Parker驱动器维修COMPAX控制器维修CPX0200H
postgres 建立连接并删除记录
Golang (1) | from environmental preparation to quick start
递归查询多级菜单数据
有些事情让感情无处安放
Objects in the list, sorted by a field
selenium 获取dom内属性值的方法
Arcgis\qgis no plug-in loading (no offset) mapbox HD image map
Comparison table of foreign lead American abbreviations
2022-07-03-CKA-粉丝反馈最新情况
100 cases of shell programming
Teach yourself to train pytorch model to Caffe (I)
uni-app 蓝牙通信
Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
Teach yourself to train pytorch model to Caffe (III)
123456
SYSTEMd resolved enable debug log
int GetMonth( ) const throw( ); What does throw () mean?
Talk about my fate with some programming languages
How to send samples when applying for BS 476-7 display? Is it the same as the display??