博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#leetcode#One Edit Distance
阅读量:5918 次
发布时间:2019-06-19

本文共 2000 字,大约阅读时间需要 6 分钟。

Given two strings S and T, determine if they are both one edit distance apart.

分析:one edit distance,要么S,T长度同样, 仅仅有一对不同char,那么仅仅要跳过这对不同的char,应该能匹配完两个String的;

                                               要么S。T长度相差一。其它部分都匹配,则仅仅要跳过长度长的那个String的不匹配字符继续匹配,假设能够匹配完两个String,则返回true

时间复杂度: 仅仅需一遍扫描, O(n)

public class Solution {    public boolean isOneEditDistance(String s, String t) {        // make s to be the shorter String        if(s.length() > t.length()){            return isOneEditDistance(t, s);        }                if(t.length() - s.length() > 1){            return false;        }                int shift = t.length() - s.length();        int i = 0;        while(i < s.length() && s.charAt(i) == t.charAt(i)){            i++;        }        if(shift == 0){            i++;            while(i < s.length() && s.charAt(i) == t.charAt(i)){                i++;            }            return i == s.length();        }else{            if(i == s.length()){                return true;            }else{                while(i < s.length() && s.charAt(i) == t.charAt(i + 1)){                    i++;                }                return i == s.length();            }        }    }}

又观察了一下,事实上shift == 1 的情况下没有必要单独讨论 if(i == s.length())。能够整合到以下的推断中, 改进例如以下

public class Solution {    public boolean isOneEditDistance(String s, String t) {        // make s to be the shorter String        if(s.length() > t.length()){            return isOneEditDistance(t, s);        }                if(t.length() - s.length() > 1){            return false;        }                int shift = t.length() - s.length();        int i = 0;        while(i < s.length() && s.charAt(i) == t.charAt(i)){            i++;        }        if(shift == 0){            i++;            while(i < s.length() && s.charAt(i) == t.charAt(i)){                i++;            }            return i == s.length();        }else{            while(i < s.length() && s.charAt(i) == t.charAt(i + 1)){                i++;            }            return i == s.length();        }    }}

转载地址:http://vsfvx.baihongyu.com/

你可能感兴趣的文章
简历中的交互设计--转自人人FED
查看>>
开源jumpserver 跳板机搭建
查看>>
我的友情链接
查看>>
python学习笔记--虫师
查看>>
更聪明而不是更辛苦地工作
查看>>
Linux部署webalizer日志分析工具
查看>>
压榨SCP传输速度
查看>>
线程三线程安全
查看>>
我的友情链接
查看>>
如何删除Exchange
查看>>
PostgreSQL VS MySQL
查看>>
文本查找工具grep及正则表达式的使用
查看>>
Java记录 -47- 线性数据结构
查看>>
Linux内核启动更改
查看>>
Linux网络编程基础_4_网络层(一)
查看>>
Pgp简介
查看>>
animate动画
查看>>
CentOS安装GNOME方法(CentOS最小化安装后再安装图形界面的方法)
查看>>
ISP路由表分发中的AS与BGP
查看>>
导入项目出现:Unable to resolve target 'android-10' 解决办法
查看>>