字符串
相似解法题目多元组
- 模拟:<BM86 大数加法,BM11 链表相加(二)>
BM86 大数相加
描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
例如,输入 "1", "99",返回 "100"。
思路
模拟
大整数相加,可以按照整数相加的方式,从个位开始,逐渐向上累加。在字符串中就是从两个字符串的末尾开始相加。
F1:模拟法
步骤
做法与 BM11 链表相加(二)几乎一致。不同的地方,一个是字符串可以直接从后向前遍历;二是在于最后的进位需要在返回前进行判断,再决定是否给字符串添加进位'1'。
- 若是其中一个字符串为空,直接返回另一个,不用加了。
- 设置两个用于遍历各自字符串的下标 i,j 以及用于遍历辅助字符数组的下标 p,取最大的字符串长度作为辅助字符数组的长度,设置进位 carry = 0。
- 从后开始遍历两个字符串,直到两个下标都为 -1。每次取出非 -1 的下标的字符转换成数字,如果是 -1 就设置为 0,将两个转换好的数字与carry 相加,然后查看是否进位,将进位后的结果(对 10 取模)放入对应辅助字符数组内,并继续向前遍历。
- 遍历结束后,将辅助字符数组转换成字符串,如果存在进位,则直接在字符串前增加一个字符 '1'。
代码
1 | public static String solve(String s, String t) { |
时间复杂度
\(O(max(m,n))\)
其中 m 与 n 分别为两个字符串的长度。
空间复杂度
\(O(max(m,n))\)
其中 m 与 n 分别为两个字符串的长度,用于辅助字符数组。