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;
        }
    };
  • 相关阅读:
    开源博客平台WordPress十岁啦!
    (转载)C# Attribute 用法备忘
    hibernate入门
    Hibernate对象关系映射基础
    struts2UI标签
    struts2文件上传2(多文件)
    struts2验证(手工)
    通过修改注册表改变txt文件的默认打开方式
    struts2验证(XML)
    Struts国际化
  • 原文地址:https://www.cnblogs.com/ke-YIJIE916/p/13058087.html
Copyright © 2011-2022 走看看