✡ leetcode 161. One Edit Distance 判断两个字符串是否是一步变换 --------- java
Given two strings S and T, determine if they are both one edit distance apart.
给定两个字符串,判断他们是否是一步变换得到的。
在这里需要注意几点:
1、不等于1的变换都要返回false(包括变换次数等于0)。
2、还有很多细节需要注意。
方法如下:
1、直接判断:1)如果差值大于1,直接返回false。
2)如果长度相同,那么依次判断,是否只有一个字母不一样。
3)如果不一样,那么看是否是只是多出了一个字母。
public class Solution {
public boolean isOneEditDistance(String s, String t) {
int len1 = s.length();
int len2 = t.length();
if (len1 < len2){
return isOneEditDistance(t, s);
}
if (len1 - len2 > 1){
return false;
}
boolean flag = false;
if (len1 == len2){
for (int i = 0; i < len1; i++){
if (s.charAt(i) != t.charAt(i)){
if (!flag){
flag = true;
} else {
return false;
}
}
}
return flag;
} else {
int sStart = 0;
int tStart = 0;
while (tStart < len2){
if (s.charAt(sStart) == t.charAt(tStart)){
tStart++;
sStart++;
} else {
if (!flag){
flag = true;
sStart++;
} else {
return false;
}
}
}
return true;
}
}
}
2、利用substring和equals来判断,代码会简洁很多。
public class Solution {
public boolean isOneEditDistance(String s, String t) {
for (int i = 0; i < Math.min(s.length(), t.length()); i++){
if (s.charAt(i) != t.charAt(i)){
if (s.length() == t.length()){
return s.substring(i + 1).equals(t.substring(i + 1));
} else if (s.length() == t.length() - 1){
return s.substring(i).equals(t.substring(i + 1));
} else {
return s.substring(i + 1).equals(t.substring(i));
}
}
}
return Math.abs(s.length() - t.length()) == 1;
}
}
这两者的速度都差不多,都是2ms左右,答案有一些是1ms,将string换成char[]就可以了,所以就没贴上去的必要了。
✡ leetcode 161. One Edit Distance 判断两个字符串是否是一步变换 --------- java的更多相关文章
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...
- [LeetCode] 161. One Edit Distance 一个编辑距离
Given two strings s and t, determine if they are both one edit distance apart. Note: There are 3 pos ...
- [leetcode]161. One Edit Distance编辑步数为一
Given two strings s and t, determine if they are both one edit distance apart. Note: There are 3 pos ...
- [LeetCode#161] One Edit Distance
Problem: Given two strings S and T, determine if they are both one edit distance apart. General Anal ...
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- mysql 判断两个字符串是否存在包含关系-------(1,2,3)与(2,3)
1.这里这个是目前有问题的 #创建FUNCTION DELIMITER ; CREATE FUNCTION `is_mixed`(str1 TEXT, str2 TEXT) RETURN ...
- python利用difflib判断两个字符串的相似度
我们再工作中可能会遇到需要判断两个字符串有多少相似度的情况(比如抓取页面内容存入数据库,如果相似度大于70%则判定为同一片文章,则不录入数据库) 那这个时候,我们应该怎么判断呢? 不要着急,pytho ...
- 【LeetCode】161. One Edit Distance
Difficulty: Medium More:[目录]LeetCode Java实现 Description Given two strings S and T, determine if the ...
- 161. One Edit Distance
题目: Given two strings S and T, determine if they are both one edit distance apart. 链接: http://leetco ...
随机推荐
- [luogu2982][USACO10FEB]慢下来Slowing down(树状数组+dfs序)
题目描述 Every day each of Farmer John's N (1 <= N <= 100,000) cows conveniently numbered 1..N mov ...
- yii2-更改默认显示的通用主页
在views/layouts/目录下新建一个login.php,然后SiteController中更新下面的方法 public function actionIndex() { $this->l ...
- hdu4734 F(x)
链接 这题当时在网络赛时很费劲的推出来的,以递推的形式写出来的,一些边界点特别不好控制,靠看数据改出来的.现在改出dfs形式,也是很简单的. 因为f(x)的数不会很大,直接保留前面枚举的数得出的结果即 ...
- mysql简介
1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数 ...
- flash的动态加载技术
这里所说的动态加载技术, 主要是指代码模块(可以是swc也可以是swf)的动态加载.即主swf在运行的时候, 可以根据需要动态加载所需的代码模块. 为了讨论方便, 下面所说的代码模块都用swc表示,用 ...
- 【汇编】mov [1000],bx:immediate operand not allowed
],bx;在目的操作数中编译器会忽略[],所以[1000]就成了立即数,出现“immediate operand not allowed”改: ;mov bx,[1000];而在源操作数中,就不会出现 ...
- hdu 5876 ACM/ICPC Dalian Online 1009 Sparse Graph
题目链接 分析:这叫补图上的BFS,萌新第一次遇到= =.方法很简单,看了别人的代码后,自己也学会了.方法就是开两个集合,一个A表示在下一次bfs中能够到达的点,另一个B就是下一次bfs中到不了的点. ...
- Android开发--ScrollView的应用
1.简介 当内容无法全部显示时,需要采取滚动的方式获取其与内容.其中,ScrollView为垂直滚动控件,HorizontalScrollView为水平滚动控件. 2.构建
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- 二模 (15)day1
第一题: 题目大意: 有两个长度为N的序列A和B,在A和B中各任取一个数相加可以得到N2个和,求这N2个和中最小的N个. 解题过程: 1.这题是刘汝佳<<训练指南>>上的一道经 ...