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

打印 上一主题 下一主题

主题 504|帖子 504|积分 1512

题目:

题解:
  1. func stringAdd(x, y string) string {
  2.     res := []byte{}
  3.     carry, cur := 0, 0
  4.     for x != "" || y != "" || carry != 0 {
  5.         cur = carry
  6.         if x != "" {
  7.             cur += int(x[len(x)-1] - '0')
  8.             x = x[:len(x)-1]
  9.         }
  10.         if y != "" {
  11.             cur += int(y[len(y)-1] - '0')
  12.             y = y[:len(y)-1]
  13.         }
  14.         carry = cur / 10
  15.         cur %= 10
  16.         res = append(res, byte(cur)+'0')
  17.     }
  18.     for i, n := 0, len(res); i < n/2; i++ {
  19.         res[i], res[n-1-i] = res[n-1-i], res[i]
  20.     }
  21.     return string(res)
  22. }
  23. func valid(num string, secondStart, secondEnd int) bool {
  24.     n := len(num)
  25.     firstStart, firstEnd := 0, secondStart-1
  26.     for secondEnd <= n-1 {
  27.         third := stringAdd(num[firstStart:firstEnd+1], num[secondStart:secondEnd+1])
  28.         thirdStart := secondEnd + 1
  29.         thirdEnd := secondEnd + len(third)
  30.         if thirdEnd >= n || num[thirdStart:thirdEnd+1] != third {
  31.             break
  32.         }
  33.         if thirdEnd == n-1 {
  34.             return true
  35.         }
  36.         firstStart, firstEnd = secondStart, secondEnd
  37.         secondStart, secondEnd = thirdStart, thirdEnd
  38.     }
  39.     return false
  40. }
  41. func isAdditiveNumber(num string) bool {
  42.     n := len(num)
  43.     for secondStart := 1; secondStart < n-1; secondStart++ {
  44.         if num[0] == '0' && secondStart != 1 {
  45.             break
  46.         }
  47.         for secondEnd := secondStart; secondEnd < n-1; secondEnd++ {
  48.             if num[secondStart] == '0' && secondStart != secondEnd {
  49.                 break
  50.             }
  51.             if valid(num, secondStart, secondEnd) {
  52.                 return true
  53.             }
  54.         }
  55.     }
  56.     return false
  57. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表