zoukankan      html  css  js  c++  java
  • Lintcode ladder F [640. One Edit Distance]

    此题属于medium难度!

    Description:
    Given two strings S and T, determine if they are both one edit distance apart.
    One ediit distance means doing one of these operation:

    insert one character in any position of S
    delete one character in S
    change one character in S to other character

    思路:我刚开始想到的是采用傻子做法,每种情况都给列出来!其实,此题完全可以用用递归处理一部分!
    这道题讲的是有俩个字符串,判断是能通过一步的变化使得俩个字符串相等? 可以知道的是字符串长度的大小不能大于1,也不能是俩个字符串相等(坑)不然一步变换不可能相等!
    在s长度大于t长度时,设置for循环进行遍历,复制或者插入就可。当t长度大于s长度时,直接用递归就好!

    public:
        bool isOneEditDistance(string &s, string &t) 
        {
            int m = s.size();
            int n = t.size();
            if(n - m > 1|| s == t)
            {
                return false;
            }
            if(m > n)
            {
                return isOneEditDistance(t,s);
            }
            for(int i = 0; i < m; i++)
            {
                if(s[i] != t[i])
                {
                    if(m == n)
                    {
                        s[i] = t[i];
                    }
                    else
                    {
                        s.insert(i,1,t[i]);
                    }
                    break;
                }
            }
            return s==t || s+t[n-1]==t;
        }
    };
  • 相关阅读:
    Css实现漂亮的滚动条样式
    清除浮动的方式有哪些?比较好的是哪一种?
    Cookie、sessionStorage、localStorage的区别
    http和https的区别?
    git 拉取分支切换分支
    css 三角形
    js中??和?.的意思
    js this指向
    tsconfig.json配置
    查看本地安装的所有npm包
  • 原文地址:https://www.cnblogs.com/ke-YIJIE916/p/13058087.html
Copyright © 2011-2022 走看看