当前位置:网站首页>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;
}
}
边栏推荐
猜你喜欢
MMAP学习
MATLAB | App Designer·我用MATLAB制作了一款LATEX公式实时编辑器
Sorting out the problems encountered in MySQL built by pycharm connecting virtual machines
Huawei fast game failed to call the login interface, and returned error code -1
从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
华为云ModelArts文本分类–外卖评论
Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
leetcode:1755. Sum of subsequences closest to the target value
Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»
PIP install beatifulsoup4 installation failed
随机推荐
DBeaver同时执行多条insert into报错处理
854. 相似度为 K 的字符串 BFS
华为游戏多媒体调用切换房间方法出现异常Internal system error. Reason:90000017
Recursive query of multi-level menu data
2022-07-03-CKA-粉丝反馈最新情况
[daily training] 729 My schedule I
Reading and writing operations of easyexcel
Detailed explanation of memset() function usage
postgis 安装地理信息扩展
Making global exception handling classes with aspect
秋招将临 如何准备算法面试、回答算法面试题
NET中小型企业项目开发框架系列(一个)
Analysis and test of ModbusRTU communication protocol
Drawing HSV color wheel with MATLAB
Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
Oracle检查点队列–实例崩溃恢复原理剖析
SQL common syntax records
Zhang Lijun: penetrating uncertainty depends on four "invariants"
Selenium's method of getting attribute values in DOM
Opérations de lecture et d'écriture pour easyexcel