ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一次编辑

2021-02-19 23:57:38  阅读:142  来源: 互联网

标签:一次 return oneEditAway 示例 len 编辑 second first


一次编辑

字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

示例 1:

  • 输入: 
  • first = "pale"
  • second = "ple"
  • 输出: True

示例 2:

  • 输入: 
  • first = "pales"
  • second = "pal"
  • 输出: False

示例代码:

class Solution(object):
    def oneEditAway(self, first, second):
        """
        :type first: str
        :type second: str
        :rtype: bool
        """
        if abs(len(first) - len(second)) > 1:
            return False
        if len(second) - len(first) < 0:
            first, second = second, first
        for i in range(len(first)):
            if first[i] == second[i]:
                continue
            return first[i:] == second[i+1:] or first[i+1:] == second[i+1:]
        return True


a = Solution()
# b = a.oneEditAway("pale", "pal")
b = a.oneEditAway("pales", "pal")
print(b)

运行效果:

思路解析:

要点:

  •     增删改功能特点就是:自不同位起,后续都一样

易错点:

  •     比较时,如果第1个字符串比较长,可能会index溢出;
  •     又因为增和删其实是逆操作,可直接把两个字符串交换
  •     注意比较改时,是i+1不是i
  •     因为第2个肯定比第1个长了,所以只存在增和改的比较

标签:一次,return,oneEditAway,示例,len,编辑,second,first
来源: https://blog.csdn.net/weixin_44799217/article/details/113861210

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有