当前位置:网站首页>854. String BFS with similarity K
854. String BFS with similarity K
2022-07-05 21:45:00 【Empress Yu】
854. The similarity is K String
character string
s1
ands2
yesk
be similar Of ( For some nonnegative integersk
), If we could exchanges1
The two letters in the are in the right placek
Time , Make the result string equal tos2
.Given two word puzzles
s1
ands2
, returns1
ands2
Andk
be similar Minimumk
.Example 1:
Input :s1 = "ab", s2 = "ba" Output :1Example 2:
Input :s1 = "abc", s2 = "bca" Output :2Tips :
1 <= s1.length <= 20
s2.length == s1.length
s1
ands2
Contains only sets{'a', 'b', 'c', 'd', 'e', 'f'}
Small letters ins2
yess1
A word puzzle
The result of doing the question
Failure ,dfs All the time , Have a headache
Method :BFS
1. The starting steps are 0, Resolve for the sake of seeking a become b The minimum number of steps of
2. Fill in one of the same characters each time , Move to the corresponding position
3. Find it and go back
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;
}
}
边栏推荐
- crm创建基于fetch自己的自定义报告
- Detailed explanation of memset() function usage
- Robot operation mechanism
- 2.2 basic grammar of R language
- Pointer parameter passing vs reference parameter passing vs value parameter passing
- Golang (1) | from environmental preparation to quick start
- Cold violence -- another perspective of objective function setting
- Xlrd common operations
- regular expression
- Drawing HSV color wheel with MATLAB
猜你喜欢
Scenario interview: ten questions and ten answers about distributed locks
Explain various hot issues of Technology (SLB, redis, mysql, Kafka, Clickhouse) in detail from the architecture
使用Aspect制作全局异常处理类
阿里云有奖体验:用PolarDB-X搭建一个高可用系统
EBS Oracle 11g 克隆步骤(单节点)
Yolov5 training custom data set (pycharm ultra detailed version)
华为快游戏调用登录接口失败,返回错误码 -1
MMAP
张丽俊:穿透不确定性要靠四个“不变”
从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
随机推荐
An exception occurred in Huawei game multimedia calling the room switching method internal system error Reason:90000017
华为游戏多媒体服务调用屏蔽指定玩家语音方法,返回错误码3010
Cross end solutions to improve development efficiency
Parker driver maintenance COMPAX controller maintenance cpx0200h
ICMP 介绍
场景化面试:关于分布式锁的十问十答
华为联机对战如何提升玩家匹配成功几率
Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
Huawei game multimedia service calls the method of shielding the voice of the specified player, and the error code 3010 is returned
大约SQL现场“这包括”与“包括在”字符串的写法
2022-07-03-cka- latest feedback from fans
selenium 获取dom内属性值的方法
SecureCRT使用提示
MMAP
Golang (1) | from environmental preparation to quick start
办公遇到的问题--
Summary of data analysis steps
2022-07-03-CKA-粉丝反馈最新情况
MMAP学习
DBeaver同时执行多条insert into报错处理