码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode415拓展字符串相加(带符号)


    1. class Solution:
    2. def addtoStrings(self,num1,num2):
    3. # 两个数字字符串相加的结果转为字符串
    4. i, j, add, res = len(num1)-1, len(num2)-1, 0, ''
    5. while i >= 0 or j >= 0 or add != 0:
    6. n1 = int(num1[i]) if i >= 0 else 0
    7. n2 = int(num2[j]) if j >= 0 else 0
    8. tmp = n1 + n2 + add
    9. # 借助除法和取余来得到进位和剩余位数的值
    10. add = tmp // 10
    11. res = str(tmp%10) + res
    12. i -= 1
    13. j -= 1
    14. return res
    15. def compare(self,num1,num2):
    16. # 比较num1和num2的大小 要求num1大于等于num2 这样判断方便后面做减法
    17. if len(num1) > len(num2):
    18. return True
    19. elif len(num2) > len(num1):
    20. return False
    21. else:
    22. # 二者相等 从高位开始比较
    23. for i in range(len(num1)):
    24. if int(num1[i]) < int(num2[i]):
    25. return False
    26. return True
    27. def minustoStrings(self,num1,num2):
    28. # 这里针对 num1大于等于num2的 两个数字字符串相减的结果转为字符串
    29. # num1 减 num2 的字符串结果
    30. i, j, minus, res = len(num1)-1, len(num2)-1, 0, ''
    31. while i >= 0:
    32. n1 = int(num1[i]) if i >= 0 else 0
    33. n2 = int(num2[j]) if j >= 0 else 0
    34. diff = n1 - n2 - minus
    35. if diff < 0:
    36. diff += 10
    37. minus = 1
    38. else:
    39. minus = 0
    40. res = str(diff) + res
    41. i -= 1
    42. j -= 1
    43. for i in range(len(res)):
    44. if res[i] != '0':
    45. return res[i:]
    46. return '0'
    47. def addStrings(self, num1, num2) :
    48. if num1[0] == '-' and num2[0] == '-':
    49. return '-' + self.addtoStrings(num1[1:],num2[1:])
    50. if num1[0] == '-':
    51. # 若num1 更大 则为负 若num2更大则为正
    52. if self.compare(num1[1:],num2):
    53. return '-' + self.minustoStrings(num1[1:],num2)
    54. else:
    55. return self.minustoStrings(num2,num1[1:])
    56. if num2[0] == '-':
    57. # 若num2 更大 则为负 若num1更大则为正
    58. if self.compare(num2[1:],num1):
    59. return '-' + self.minustoStrings(num2[1:],num1)
    60. else:
    61. return self.minustoStrings(num1,num2[1:])
    62. else:
    63. return self.addtoStrings(num1,num2)
    64. num1 = '53'
    65. num2 = '-3'
    66. a = Solution()
    67. print(a.addStrings(num1,num2))
  • 相关阅读:
    运维知识点-Windows操作系统cmd/Dos批处理命令与脚本手册bat
    界面组件Telerik加强对Fluent主题支持,让应用程序更国际化
    标本传送设备物联网应用案例|蓝蜂物联网一体化方案
    小迪笔记(1)——操作系统&文件下载&反弹SHELL&防火墙绕过
    Day-06 基于 Docker 安装 Nginx 镜像
    STM32的SPI外设
    RPC框架性能优化思路和具体实现
    Windows如何实现java版本的切换--使用JEnv(小宇特详解)
    Nginx+cpolar实现内网穿透多个Windows Web站点端口
    CloudCompare 二次开发(19)——三维点云边界提取
  • 原文地址:https://blog.csdn.net/cuier520/article/details/134488850
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号