当前位置:网站首页>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;
}
}边栏推荐
- Selenium finds the contents of B or P Tags
- Making global exception handling classes with aspect
- Hdu2377bus pass (build more complex diagram +spfa)
- Arcgis\qgis no plug-in loading (no offset) mapbox HD image map
- Ethereum ETH的奖励机制
- How to send samples when applying for BS 476-7 display? Is it the same as the display??
- 使用Aspect制作全局异常处理类
- Wood board ISO 5660-1 heat release rate mapping test
- 100 cases of shell programming
- R语言【数据管理】
猜你喜欢

Clickhouse copy paste multi line SQL statement error

Uni app Bluetooth communication

XML modeling

Zhang Lijun: la pénétration de l’incertitude dépend de quatre « invariants»

張麗俊:穿透不確定性要靠四個“不變”

Zhang Lijun: penetrating uncertainty depends on four "invariants"
![R language [data management]](/img/41/b89bb8794c06280e58988e1c1a5e02.png)
R language [data management]

【案例】定位的运用-淘宝轮播图

阿里云有奖体验:用PolarDB-X搭建一个高可用系统

Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
随机推荐
Realize the function of verifying whether the user has completed login when browsing the page
Learning robots have no way to start? Let me show you the current hot research directions of robots
Some things make feelings nowhere to put
LeetCode_ Hash table_ Difficulties_ 149. Maximum number of points on the line
Selenium's method of getting attribute values in DOM
xlrd常见操作
What are the requirements of UL 2043 test for drive housing in the United States?
Opérations de lecture et d'écriture pour easyexcel
Summary of data analysis steps
@Validated basic parameter verification, grouping parameter verification and nested parameter verification
The transformation based on vertx web sstore redis to realize the distributed session of vertx HTTP application
Influence of oscilloscope probe on measurement bandwidth
Objects in the list, sorted by a field
Two ways to realize video recording based on avfoundation
Is it necessary for bazel to learn
MySQL InnoDB Architecture Principle
终端安全能力验证环境搭建和渗透测试记录
Five layer network protocol
Making global exception handling classes with aspect
postgres 建立连接并删除记录