当前位置:网站首页>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
s1ands2yeskbe similar Of ( For some nonnegative integersk), If we could exchanges1The two letters in the are in the right placekTime , Make the result string equal tos2.Given two word puzzles
s1ands2, returns1ands2Andkbe similar Minimumk.Example 1:
Input :s1 = "ab", s2 = "ba" Output :1Example 2:
Input :s1 = "abc", s2 = "bca" Output :2Tips :
1 <= s1.length <= 20s2.length == s1.lengths1ands2Contains only sets{'a', 'b', 'c', 'd', 'e', 'f'}Small letters ins2yess1A 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;
}
}边栏推荐
猜你喜欢

Summarize the reasons for 2XX, 3xx, 4xx, 5xx status codes

Cross end solution to improve development efficiency rapidly

MQ----activeMq

How can Huawei online match improve the success rate of player matching

面试官:并发编程实战会吗?(线程控制操作详解)

Ethereum ETH的奖励机制

Simple interest mode - evil Chinese style

2.2.5 basic sentences of R language drawing

Some common processing problems of structural equation model Amos software

2.2 basic grammar of R language
随机推荐
Incentive mechanism of Ethereum eth
The solution to the problem that Oracle hugepages are not used, causing the server to be too laggy
Drawing HSV color wheel with MATLAB
Some things make feelings nowhere to put
2.2.5 basic sentences of R language drawing
datagrid直接编辑保存“设计缺陷”
Selenium's method of getting attribute values in DOM
Why can't Chinese software companies produce products? Abandon the Internet after 00; Open source high-performance API gateway component of station B | weekly email exclusive to VIP members of Menon w
leetcode:1755. Sum of subsequences closest to the target value
Three components of openpyxl
如何组织一场实战攻防演练
Parker driver maintenance COMPAX controller maintenance cpx0200h
从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
事项研发工作流全面优化|Erda 2.2 版本如“七”而至
Analysis and test of ModbusRTU communication protocol
Cold violence -- another perspective of objective function setting
int GetMonth( ) const throw( ); What does throw () mean?
让开发效率提升的跨端方案
Longest swing sequence [greedy practice]
kingbaseES V8R3数据安全案例之---审计记录清除案例