class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @param t string字符串
* @return bool布尔型
*/
bool editdistance(string s, string t) {
// write code here
//分三种情况讨论,1,当s和t长度相同,说明只有一个位置不同才行,遍历判断即可
//2,当s比t长一个字符,则依次遍历遇到第一个不同的位置后,s跳过一个位置继续比,后续都相同则成立否则不行
//3,当s比t短一个字符,依次遍历遇到第一个不同位置后,t跳过一个位置继续比较,同上
int m=s.size();
int n=t.size();
if(abs(m-n)>1)//长度相差二以上则不可能成立
return false;
//情况一
if(m==n)
{
int cnt=0;//不等的个数
for(int i=0; i<m; i++)//遍历记录不相同元素的个数
{
if(s[i]!=t[i])
cnt++;
}
if(cnt!=1)
return false;
return true;
}
//情况二
if(m>n)
{
int cnt=0;
for(int i=0; i<n; i++)
{
if(s[i]!=t[i])
{
//删掉s中不同的元素
s.erase(i,1);
i--;
cnt++;
}
if(cnt>1)
return false;
}
return true;
}
//情况三
if(m<n)
{
int cnt=0;
for(int i=0; i<m; i++)
{
if(s[i]!=t[i])
{
//删掉t中不同的元素
t.erase(i,1);
i--;
cnt++;
}
if(cnt>1)
return false;
}
return true;
}
return false;
}
};