当前位置:网站首页>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;
}
}边栏推荐
- int GetMonth( ) const throw( );后面的throw( )什么意思?
- Simple interest mode - lazy type
- Evolution of zhenai microservice underlying framework from open source component encapsulation to self-development
- postgis 安装地理信息扩展
- Influence of oscilloscope probe on signal source impedance
- Gcc9.5 offline installation
- Selenium finds the contents of B or P Tags
- PVC plastic sheets BS 476-6 determination of flame propagation properties
- Display DIN 4102-1 Class B1 fire test requirements
- 【案例】定位的运用-淘宝轮播图
猜你喜欢

Feng Tang's "spring breeze is not as good as you" digital collection, logged into xirang on July 8!

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

Parker driver maintenance COMPAX controller maintenance cpx0200h

KingbaseES V8R3集群维护案例之---在线添加备库管理节点

Influence of oscilloscope probe on signal source impedance
![[case] Application of positioning - Taobao rotation map](/img/2d/c834ce95a2c8e53a20e67fa2e99439.png)
[case] Application of positioning - Taobao rotation map

显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??

CLion配置visual studio(msvc)和JOM多核编译

Recursive query of multi-level menu data

阿里云有奖体验:用PolarDB-X搭建一个高可用系统
随机推荐
How to send samples when applying for BS 476-7 display? Is it the same as the display??
Arcgis\qgis no plug-in loading (no offset) mapbox HD image map
Aitm2-0002 12s or 60s vertical combustion test
面试官:并发编程实战会吗?(线程控制操作详解)
Teach yourself to train pytorch model to Caffe (I)
Add ICO icon to clion MinGW compiled EXE file
"Grain mall" -- Summary and induction
vant 源码解析 之深层 合并对象 深拷贝
100 cases of shell programming
Problems encountered in office--
Alibaba cloud award winning experience: build a highly available system with polardb-x
Sitge joined the opengauss open source community to jointly promote the ecological development of the database industry
Talk about my fate with some programming languages
Simple interest mode - lazy type
ODPs next map / reduce preparation
R语言【数据管理】
Longest swing sequence [greedy practice]
ArcGIS栅格重采样方法介绍
AITM 2-0003 水平燃烧试验
Simple getting started example of Web Service