每日一题——一次编辑(双百通过)

简介: 每日一题——一次编辑(双百通过)

面试题 01.05. 一次编辑

题目描述:

思路:

  firstLen := len(first) // 第一个字符串的长度
  secondLen := len(second) // 第二个字符串的长度
  differVal := math.Abs(float64(firstLen - secondLen)) // 二者长度的差值
  longStr := "" // 用于存放长的那个字符串
  shortStr := "" // 用于存放短的那个字符串

整体可以考虑三种情况:

differVal >= 2 这个时候是不可能通过0次或1次编辑达到二者一样的,直接返回false。

differVal == 0 这个时候只需要判断不一样的字符个数,如果大于1,就说明通过0次或1次编辑是不可能达到二者一样的,直接返回false;反之可以,返回true即可。

differVal == 1这个时候不用思考的那么复杂,具体见题解:

题解:

func oneEditAway(first string, second string) bool {
  firstLen := len(first)
  secondLen := len(second)
  differVal := math.Abs(float64(firstLen - secondLen))
  if differVal >= 2 {
    return false
  } else if differVal == 1 {
    longStr := "" // 长字符串
    shortStr := "" // 短字符串
    if firstLen > secondLen {
      longStr = first
      shortStr = second
    } else {
      longStr = second
      shortStr = first
    }
    // 为两个字符串分别定义一个指针:lenStrPoint,shortStrPoint
    lenStrPoint := 0
    shortStrPoint := 0
    // 定义一个计数器
    count:=0
    // 遍历完短字符串为止
    for shortStrPoint < len(shortStr) {
      // 如果二者指针指向的字符不同,长指针++
      if shortStr[shortStrPoint] != longStr[lenStrPoint] {
        lenStrPoint++
        count++
        if count>1 {
           return false
        }
      }else {
        // 否则都++
        shortStrPoint++
        lenStrPoint++
      }
    }
  } else if differVal == 0 {
    count := 0
    for i := 0; i < firstLen; i++ {
      if first[i] != second[i] {
        count++
      }
      if count > 1 {
        return false
      }
    }
  }
  return true
}

提交结果:

相关文章
|
6天前
|
人工智能 算法 编译器
刷题日记①
刷题日记①
40 2
|
6天前
面试题 01.05:一次编辑
面试题 01.05:一次编辑
19 0
|
11月前
|
算法 前端开发
蓝桥杯 —— Web前端(算法类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(算法类)【标题即题目链接,点击查看具体要求】
151 0
|
11月前
|
前端开发 算法
蓝桥杯 —— Web前端(Bug调试类)【标题即题目链接,点击查看具体要求】
蓝桥杯 —— Web前端(Bug调试类)【标题即题目链接,点击查看具体要求】
|
Shell 开发工具
吐血整理--VI编辑器常用操作汇总
吐血整理--VI编辑器常用操作汇总
124 0
LeetCode每日一题(22)——一次编辑
一次编辑 1.题目 2.示例 3.思路 4.代码
LeetCode——面试题 01.05. 一次编辑
LeetCode——面试题 01.05. 一次编辑
45 0
LeetCode每日一题——面试题 01.05. 一次编辑
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
64 0
|
算法 Java
『牛客|每日一题』AB5 点击消除
基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf
52 0
『牛客|每日一题』AB5 点击消除