美文网首页
面试题 01.05. 一次编辑

面试题 01.05. 一次编辑

作者: spark打酱油 | 来源:发表于2022-12-12 15:27 被阅读0次

    1.题目

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

    2.思路

    2.1 方法

    双指针模拟

    2.2 过程

    • 如果两个字符串长度相差大于1,则一次修改不能完成编辑,故返回false.
    • 由于题目中,没有明确,哪个字符串长度大,哪个字符串长度小,故需要明确下长度大的字符串。
    • 双指针循环处理,加上标记符号count,代表修改次数。
    • 如果两个字符串的字符都相等,则两者都需要进行后移操作。
    • 如果两个字符串不相等,再进行判断长度是否相等,如果相等,均后移,count+1,如果不相等,长的字符串索引+1,count+1
    • 最后返回判断 count<=1

    3.代码

    def oneEditAway(first: String, second: String): Boolean = {
        val firstLen: Int = first.length
        val secondLen: Int = second.length
        if(Math.abs(firstLen-secondLen)>1) return false
        if(firstLen<secondLen) return oneEditAway(second,first)
        var index1 = 0
        var index2 = 0
        var count = 0
        while (index1<firstLen&&index2<secondLen&&count<=1){
          val firstChar: Char = first(index1)
          val secondChar: Char = second(index2)
          if(firstChar==secondChar){
            index1=index1+1
            index2=index2+1
          }
          else {
            if(firstLen==secondLen){
              index1=index1+1
              index2=index2+1
              count=count+1
            }
            else {
              index1=index1+1
              count=count+1
            }
          }
        }
       return count<=1
      }
    
    ```            -    

    相关文章

      网友评论

          本文标题:面试题 01.05. 一次编辑

          本文链接:https://www.haomeiwen.com/subject/eaqcqdtx.html