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; } };