415. 字符串相加(Python)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了415. 字符串相加(Python)相关的知识,希望对你有一定的参考价值。
参考技术A 难度:★★☆☆☆
类型:字符串
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何内建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
这道题就是让我们实现小学学的多位数的加法运算,与 【题目371. 两整数之和类似】 ,做完这两道题,我们就学会了使用二进制和十进制进行加法计算的流程。我们可以回顾一下两个多位数的加法流程:
算法上,我们需要注意:
1. 处理字符与数值的关系。 数值的计算需要将单个字符转换为对应的数字,这里我们使用ascii码方式,计算任意数字字符num_char的方式为:ord(num_char) - ord(\'0\'),例如字符\'0\'对应的数字为ord(\'0\')-ord(\'0\')=0;
2. 关于遍历顺序。 输入数字按字符串形式给出,我们从最低位向最高位计算,需要将输入字符串做逆序调整(也可以在索引时逆序索引,但是这样比较麻烦);
3. 关于如何循环。 循环的控制条件需要从最低位遍历到两个数中较长的字符串的长度,我们需要考虑输入的两个数字长度不同的情况,因此逆序提取两个数字的对应位时,需要考虑输入数字在这一位上有没有数值,这里根据下标索引与所提取的字符串的长度之间的关系来进行判定,如果其中一个字符串没有这一位,则当前位设置为零,例如"123"和"45"相加,需要遍历到百位,而且两个数字中提取出的百位分别是"1"和"0";
4. 不要忽略进位的作用。 每一位的计算不仅需要两个数字对应位的值,还需要考虑上一步的进位,且当前位的计算结果可能大于10,这时也需要向更高位进位;另外,在循环遍历结束之后,如果仍然有进位,我们还需要把进位添加到更高位上。例如"99"和"1"相加,循环结束后我们需要把十位上的进位"1"放在结果的更高位百位上。
编码如下:
如有疑问或建议,欢迎评论区留言~
Python字符串相加以及字符串格式化
以上是关于415. 字符串相加(Python)的主要内容,如果未能解决你的问题,请参考以下文章