写过一篇 发表于 2024-8-2 04:54:12

Golang | Leetcode Golang题解之第306题累加数

题目:
https://i-blog.csdnimg.cn/direct/30e5915a66214a0dac8c7223fd1862ff.png
题解:
func stringAdd(x, y string) string {
    res := []byte{}
    carry, cur := 0, 0
    for x != "" || y != "" || carry != 0 {
      cur = carry
      if x != "" {
            cur += int(x - '0')
            x = x[:len(x)-1]
      }
      if y != "" {
            cur += int(y - '0')
            y = y[:len(y)-1]
      }
      carry = cur / 10
      cur %= 10
      res = append(res, byte(cur)+'0')
    }
    for i, n := 0, len(res); i < n/2; i++ {
      res, res = res, res
    }
    return string(res)
}

func valid(num string, secondStart, secondEnd int) bool {
    n := len(num)
    firstStart, firstEnd := 0, secondStart-1
    for secondEnd <= n-1 {
      third := stringAdd(num, num)
      thirdStart := secondEnd + 1
      thirdEnd := secondEnd + len(third)
      if thirdEnd >= n || num != third {
            break
      }
      if thirdEnd == n-1 {
            return true
      }
      firstStart, firstEnd = secondStart, secondEnd
      secondStart, secondEnd = thirdStart, thirdEnd
    }
    return false
}

func isAdditiveNumber(num string) bool {
    n := len(num)
    for secondStart := 1; secondStart < n-1; secondStart++ {
      if num == '0' && secondStart != 1 {
            break
      }
      for secondEnd := secondStart; secondEnd < n-1; secondEnd++ {
            if num == '0' && secondStart != secondEnd {
                break
            }
            if valid(num, secondStart, secondEnd) {
                return true
            }
      }
    }
    return false
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Golang | Leetcode Golang题解之第306题累加数