Facebook 面试题 | 字符串相加

1,265 阅读2分钟

专栏 | 九章算法
网址 | www.jiuzhang.com

题目描述

给定两个字符串,代表两个数字,num1, num2.计算他们的和。返回类型也是一个字符串。

给定的两个字符串长度小于5000,只包含数字0-9,同时不包含任何的前导0,不允许使用任何的大整数计算库。

样例输入

num1 = “5”, num2= “613”, 返回“618”

算法分析

本题是简单的字符串处理+模拟问题。
由于加法的过程是从个位开始向最高位逐位相加,
而数字的个位在字符串的最大位置处(len - 1),数字的最高位在字符串的0位置处,
所以应该按照两个字符串的最大位置对齐,
假设两个字符串的长度分别为len1和len2,
那么我们应该从len1-1和len2-1开始逆序逐位相加,
每一位的加法应该考虑三个方面:
两个字符串在该位的数值以及上一位的进位。
需要注意的是两个字符串长度很可能并不相等,因此我们在处理完能够对齐的部分之后还需要考虑较长的字符串剩下的部分。
另外还有一个细节需要注意,最后一次加法运算很可能也存在进位1,这时需要单独把进位1添加到最后的结果中。

参考代码

更多优质LC答案查询网址:www.jiuzhang.com/solutions/

面试官角度分析

本题思想比较简单,是字符串模拟加法问题,如果面试者顺利给出正确的解法能够达到hire的程度。


推荐阅读:



欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等

九章算法,IT教育领域的深耕者
九章算法,IT教育领域的深耕者