• 640. 一次编辑距离


    640. 一次编辑距离

    中文English

    给定两个字符串 S 和 T, 判断T是否可以通过对S做刚好一次编辑得到。
    每次编辑可以选择以下任意一个操作:

    • 在S的任意位置插入一个字符
    • 删除S中的任意一个字符
    • 将S中的任意字符替换成其他字符

    样例

    例1:

    输入: s = "aDb", t = "adb" 
    输出: true
    

    例2:

    输入: s = "ab", t = "ab" 
    输出: false
    解释:
    s=t ,所以他们不相差一次编辑的距离
    
     
     
    输入测试数据 (每行一个参数)如何理解测试数据?

     分情况考虑,插入和删除 + 替换情况

    class Solution:
        """
        @param s: a string
        @param t: a string
        @return: true if they are both one edit distance apart or false
        """
        def isOneEditDistance(self, s, t):
            # write your code here
            #分三种情况,一个是插入,一个是删除,一个是替换
            
            len1, len2 = len(s), len(t)
            if (abs(len1 - len2) > 1): return False 
            if (s == t): return False 
            
            left = 0
            
            #如果是插入的话
            if (len1 < len2):
                return self.isOne(s, t)
            elif (len1 > len2):
                return self.isOne(t, s)
            else:
                count = 0 
                while left < len1:
                    if s[left] != t[left]:
                        count +=1 
                    
                    left += 1 
                
                return False if (count > 1) else True  
        
        def isOne(self, s, t):
            length = len(s)
            left = 0 
            
            #同时走,当走到不同的时候停止
            while left < length:
                if s[left] != t[left]:
                    #此时指向右一个
                    break
                
                left += 1 
            
            return s[left: ] == t[left + 1: ]                      
     
  • 相关阅读:
    进程通信
    Python爬虫获取随机的UserAgent的两种方法
    Chrome插件【请停用以开发者模式运行的扩展程序】的提示解决方案
    FCFS,SJF,HRRN调度算法总结分析(全)
    进程控制
    进程的状态和转换
    进程的调用
    系统调用
    终端和异常
    今日份崩溃——时刻注意细节
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13216650.html
Copyright © 2020-2023  润新知