LeetCode 161.One Edit Distance
来源:互联网 发布:染色玛瑙鉴别知乎 编辑:程序博客网 时间:2024/06/05 06:55
Given two strings S and T, determine if they are both one edit distance apart.
s思路:
1. 求两个字符串的distance和Edit Distance一样:增加一个字符、减少一个字符、修改一个字符。所以,先判断长度,如果长度差>1,则不是one edit distance;如果长度差==1,则两个string只有一个字母不同;如果长度差==0,则有一个位置上不同。
//方法1:比较笨。一个字符一个字符的比较。没用充分利用string的库函数,比如substr来比较!bool isOneEditDistance(string s, string t) { int m=s.size(),n=t.size(); if(abs(m-n)>1) return false; bool diff=0; int i=0,j=0; bool diff=0; while(i<m&&j<n){ if(s[i]!=t[j]){ if(diff) return false; diff=1; if(m-n==1) i++; else if(n-m==1) j++; else {i++;j++;} }else {i++;j++;} } return (m==n)&&(diff==1)||m!=n;}//方法2:参考别人做法。利用substr()来比较,代码简洁!bool isOneEditDistance(string s, string t) { int m=s.size(),n=t.size(); if(abs(m-n)>1) return false; int i=0,j=0; while(i<m&&j<n){//while最好换成for,只用递增一个变量即可。 if(s[i]!=t[j]){ if(m>n) return s.substr(i+1)==t.substr(j); else if(m<n) return s.substr(i)==t.substr(j+1); else return s.substr(i+1)==t.substr(j+1); } i++;j++; } //用for实现while功能 for(int i=0;i<min(m,n);i++){ if(s[i]!=t[i]){ if(m>n) return s.substr(i+1)==t.substr(i); else if(m<n) return s.substr(i)==t.substr(i+1); else return s.substr(i+1)==t.substr(i+1); } } return m!=n;}
0 0
- Leetcode-161.One Edit Distance
- [LeetCode]161. One Edit Distance
- LeetCode 161. One Edit Distance
- Leetcode 161. One Edit Distance
- LeetCode 161.One Edit Distance
- Leetcode One Edit Distance
- LeetCode - One Edit Distance
- leetcode - One Edit Distance
- #leetcode#One Edit Distance
- [LeetCode]One Edit Distance
- LeetCode—161. One Edit Distance
- [Leetcode] 161. One Edit Distance 解题报告
- 161. One Edit Distance
- 161. One Edit Distance
- 161. One Edit Distance
- leetcode 161: One Edit Distance
- LeetCode 161. One Edit Distance(编辑距离)
- LeetCode-161.One Edit Distance (JAVA)一次编辑距离
- 关于汉字描红的问题。
- vc++ MFC 声明定义
- mfc中关于内存泄露
- CString内存错误,高分求解!
- 菜鸟求助,急!!!!!VC TeeChart AddArray
- LeetCode 161.One Edit Distance
- mfc调用media player控件会闪烁的问题
- VC++对话框的KeyDown问题
- windows库中,定义了类,头文件可以看到,相应的方法能不能看到阿
- 对话框中添加控件时,CMyDialog类中并没有CButton类的对象,却可以响应鼠标消息,为什么?
- exercise 41 学习面向对象
- 阿里巴巴分布式数据库服务DRDS研发历程
- 欢迎使用CSDN-markdown编辑器
- VS2008基于对话框窗口,在OnInitDialog中为什么禁止不了Button