✡ 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 ...
随机推荐
- 微内核架构(Microkernel Architecture)
微内核架构(Microkernel Architecture) 微内核架构有时也被成为插件架构模式(plug-in architecture pattern),通常用于实现基于产品的应用,如Eclip ...
- Android 四大组件之二(Service)
service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务 ...
- 第5章 Web自动化测试
5.1 Selenium简介 5.1.1 自动化测试简介 5.1.2 Selenium简介 5.2 Selenium2环境搭建 5.3 Java基础 5.3.1 新建Java工程和类 5.3.2 Ec ...
- RLP编码
RLP(Recursive Length Prefix, 递归长度前缀编码),是Ethereum中对象序列化的一个主要的编码方式,其目的是对任意嵌套的二进制数据的序列进行编码. RLP的目的仅仅是编码 ...
- html知识2
1.超链接 语法:<a href "" target="打开方式" name="页面锚点名称">链接文字或者图片</a&g ...
- ajax json 动态传值
<a href="#" onclick="getRightInfo(${v.ctid})"></a> <div id=" ...
- 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加
file_put_contents(fileName,data,flags,context) 入参说明: 参数 说明 fileName 要写入数据的文件名 data 要写入的数据.类型可以是 stri ...
- web相关概念
1.web概念:web1.0:静态页面为主(传统企业的页面)特点:由网站提供方来更新和维护内容web2.0:以动态页面为主,以用户为中心,网站由用户参与或编辑web3.0:智能化人与人与机器的交流(各 ...