415. Add Strings 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
模拟
感觉对Python来说这种加法没有意义,本身就能处理高精度问题,但还是写一写吧,引用一下之前写的C++高精度加法的内容:
输入两个数到两个变量中,然后用赋值语句求它们的和,输出。但是,我们知道,在C++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,上述算法显然不能求出精确解,因此我们需要寻求另外一种方法。在读小学时,我们做加法都采用竖式方法,这样我们方便写出两个整数相加的算法。
an……a3 a2 a1
bn……b3 b2 b1
+————————
cn……c3 c2 c1
Code
class Solution:def addStrings(self, num1: str, num2: str) -> str:ans, len1, len2, carry = '', len(num1) - 1, len(num2) - 1, 0while len1 >= 0 and len2 >= 0:ans += str(((int(num1[len1]) + int(num2[len2]) + carry) % 10))carry = (int(num1[len1]) + int(num2[len2]) + carry) // 10len1 -= 1len2 -= 1while len1 >= 0:ans += str((int(num1[len1]) + carry) % 10)carry = (int(num1[len1]) + carry) // 10len1 -= 1while len2 >= 0:ans += str((int(num2[len2]) + carry) % 10)carry = (int(num2[len2]) + carry) // 10len2 -= 1if carry:ans += str(carry)return ans[::-1]
复杂度分析
时间复杂度:O(max(len1,len2)),其中 len1=num1.length,len2=num2.length。竖式加法的次数取决于较大数的位数。
空间复杂度:O(1)。除答案外我们只需要常数空间存放若干变量。
415. Add Strings 字符串相加相关推荐
- [Leetcode][第415题][JAVA][字符串相加][双指针]
[问题描述][简单] [解答思路] 1. 双指针 从两个字符串最后开始处理 对齐字符串 添加当前位 int c = a+b+cnt; cnt为进位 超过长度的补"0" 要注意最后有 ...
- 415. Add Strings
- Leetcode:415. Add Strings
结合着这篇http://www.cnblogs.com/Michael2397/p/8027782.html自己完全实现了,顿时感觉到刷题有套路啊 public class TwoSumbin {pu ...
- LeetCode 415. 字符串相加 (逢十进一模版字符处理)
415. 字符串相加 题意: 用两个字符串表示两个数 求出其相加的结果 不能使用任何内建 BigInteger 库 不能直接将输入的字符串转换为整数形式 思路: 翻转字符串,将其转为字符数组,即从下标 ...
- Golang 【大字符串相加,求和】
题目 Golang [大字符串相加,求和] 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回. 你不能使用任何內建的用于处理大整数的库(比如 BigInteg ...
- java字符串相加_String字符串相加的原理
**因为String是非常常用的类, jvm对其进行了优化, jdk7之前jvm维护了很多的字符串常量在方法去的常量池中, jdk后常量池迁移到了堆中 ** 方法区是一个运行时JVM管理的内存区域,是 ...
- 【JS】JS中数值型字符串相加变成拼接字符串的解决方法
[JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...
- c语言两字符串转数字后相加,一个觉得很难的C语言问题。对两个数字字符串相加。 C语言 如何把一个字符串中相连的两个数字转化为一......
导航:网站首页 > 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个字符串中相连的两个数字转化为一... 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个 ...
- [Leetcode]第[43]题[JAVA][字符串相乘][字符串相加]
[问题描述][中等] [解答思路] 1. 普通竖式 **复杂度:O(N^2) ** class Solution {/*** 计算形式* num1* x num2* ------* result*/p ...
最新文章
- C++调用父类的构造函数规则
- 视觉检索:视频多帧排序
- JS判断 浏览器 是否禁用Cookie
- 慕了!网传腾讯《英雄联盟》项目组年终奖每人120万!
- 9203精英挑战赛注意事宜 一
- Oracle BBED 工具介绍
- 【2019.08.21】2019杭电多校第十场
- DotNetTextBox V3.0 所见即所得编辑器控件Ver3.2.5 Free(免费版)
- springboot 整合 storm 无法使用注解获取 Ioc 里的 bean,获取不到 spring 上下文 applicationContext
- 使用 Fiddler Hook 报错:502 Fiddler - Connection Failed
- 通过修改dat文档对植物大战僵尸关卡数进行修改
- 信息隐藏——第四章 图像信息隐藏数
- 原根(知识学习+板子总结+例题+应用)
- vue3使用element组件中的Image导致频闪
- 什么是RAW文件系统?
- ES6:12-Map集合
- Linux是什么,能干什么,在哪干?
- 杉岩PACS影像系统分布式存储架构
- 计算机软件产品备案,计算机信息系统安全专用产品销售许可备案办事指南
- 2022TWS蓝牙耳机推荐,盘点600元真无线蓝牙耳机