java实战字符串1:给定两个字符串 s 和 t,判断他们的编辑距离是否为 1。
题目描述
给定两个字符串 s 和 t,判断他们的间距是否为 1。(满足以下三个条件)
往 s 中插入一个字符得到 t
从 s 中删除一个字符得到 t
在 s 中替换一个字符得到 t
例1
输入:
ab
acb
输出:
true
例 2
输入:
cab
ad
输出
false
例 3
输入:
1203
1213
解析:
public class Main {
public static boolean isOneDistance(String s, String t) {
int sLen = s.length();
int tLen = t.length();
if (Math.abs(sLen - tLen) > 1) {
return false;
}
// 插入和删除是一种逻辑(始终保证t是最长的,当是需要删除时,就将会s和t的角色互换即可)
if (sLen > tLen) {
return isOneDistance(t, s);
}
for (int i = 0; i < sLen; i++) {
// 找不同的字符
if (s.charAt(i) != t.charAt(i)) {
if (sLen == tLen) { // 判断s和t是否等长,如果等长,后续的字符串必然相等
return s.substring(i + 1).equals(t.substring(i + 1));
//substring(i)只写一个索引值,默认是开始索引,结束到字符串某位,两个空串也是相等的
} else { //
return s.substring(i).equals(t.substring(i + 1));
}
}
}
return sLen + 1 == tLen;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sStr = sc.nextLine();
String tStr = sc.nextLine();
System.out.println(isOneDistance(sStr, tStr));
}
}
本文来自博客园,作者:{Justin_Hu},转载请注明原文链接:{https://www.cnblogs.com/gchenghu/}
浙公网安备 33010602011771号