前言:
最近好久没有写文章了,因为最近忙着期末考试,然而还是挂了一门英语(英语是硬伤啊-_-)…… 昨天,我去面试,面试官出了一道大数加法编程问题,因为是机试,所以当时觉得写得有些潦草,也没有注释,所以今天重新整理了一下思路,重新写了一遍。
题目描述:
给你两个用字符串表示的数字a 和 b,数字之中无非法字符(如abc、@#¥等字符),让我实现这两个整数的加法。
分析:
因为用a 和 b这两个数字是大数,所以我们用integer类直接将字符串类型的数字转换成int类型的数字是不可取的(因为int类型有范围限制:- 2^31 ~ 2^31 - 1);那这时,我们就剩一种方法去进行字符串的加法运算了,我们首先找出两个字符串中长度较小的那个字符串,然后根据这个字符串的长度对两个字符串从尾到头开始进行单个字符的加法运算,这里需要处理进位的问题;处理完这个加法后,我们现在需要处理长度大的那个字符串的高位运算,这里我们还是需要处理低位的进位问题。
程序实现如下:
package package_20180720;
/**
*
* @author 康茜
* 问题:处理字符串型大数加法问题
*/
public class Main1 {
public static String sum(String a, String b) {
StringBuffer result = new StringBuffer();
//默认valueA的长度大于valueB的长度
St