题解 | #编辑距离为一# O(n)时间复杂度,双向遍历

编辑距离为一

https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc

#include <cmath>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param t string字符串 
     * @return bool布尔型
     */
    bool editdistance(string s, string t) {
        // write code here
        int n=s.length();
        int m=t.length();
        if(abs(n-m)>1)
        {
            return false;
        }
        int c1=-1,c2=-1;// 记录错误位置
        int i=0,j=0;

        // 从左往右找错误位置
        while(i<n&&j<m&&s[i]==t[j])
        {
            i++;j++;
        }
        c1=j;
        i=n-1;j=m-1;

        //从右边往左找错误位置
        while(s[i]==t[j]&&i>=0&&j>=0)
        {
            i--;j--;
        }
        c2=j;

        // 如果两个方向找出来的错误位置差距超过2 说明有1个以上的错误 或者没有错误
        if(abs(c1-c2)<=2)
        {
            return true;
        }

        return false;
    }
};

全部评论

相关推荐

在喝茶的杨桃很郁闷:我简单喵两句: 1.如果不是实在没东西写不要写熟悉async await这些语法层面的东西 2.也不要写熟悉HTTP,因为http内容很多,稍微深挖一点你不会的话会让人有一种“原来你简历上面的东西都没有完全掌握”的感觉,容易给自己挖坑 3.自我评价可以删了 4.我在复习明天的面试,先mark,后面再回来继续建议
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务