两个较大整数求和--面试题

String a = "111147545...11";
String b = "25456154...425";
/*
求a+b
由于数字太长,只能存在String里,不能整体转成int/long来加,只能从头到尾一位一位的转换成int来加,
注意进位。
用一个for循环按每一位做加法,最后输出到一个String里
可以使用java函数:String.toCharArray() Integer.valueOf()

*/

    private String test(){
        String str1 = "999";
        String str2 = "769";
        StringBuilder str3 = new StringBuilder();
        StringBuilder str4 = new StringBuilder();

        String res_ge = null;
        String res_shi = null;

        String c1 = null;
        String c2 = null;
        String c3 = null;

        int len1 = str1.length();
        int len2 = str2.length();
        int minLen = len1 >= len2 ? len2 : len1;

        for (int i = 0; i <= minLen; i++){
            if (i == minLen && len1 == minLen) {//len1最短,且要对str2的第i为操作
                if (len2 == minLen){//len1 == len2
                    c3 = "0";
                } else { // len2 > len1
                    c2 = str2.substring(len2 - 1 - i, len2 - i);
                    c3 = String.valueOf(Integer.parseInt(c2));
                    str4.append(str2.substring(0, len2 - len1 - 1));//多出的位数,暂放str4
                }
            } else if (i == minLen && len2 == minLen){//len1 > len2
                c1 = str1.substring(len1-1-i, len1-i);
                c3 = String.valueOf(Integer.parseInt(c1));
                str4.append(str1.substring(0, len1 - len2 - 1));
            } else {
                c1 = str1.substring(len1 - 1 - i, len1 - i);
                c2 = str2.substring(len2 - 1 - i, len2 - i);
                c3 = String.valueOf(Integer.parseInt(c1) + Integer.parseInt(c2));
            }

            if (null != res_shi) {
                c3 = String.valueOf(Integer.parseInt(c3) + 1);
                res_shi = null;
            }

            if (c3.length() >= 2) {
                res_shi = c3.substring(0, 1);
                res_ge = c3.substring(1);
            } else {//两数相加不大于10,或较短的一个数加完了,另一个数的下一位会走这
                res_ge = c3.substring(0, 1);
            }
            str3.append(res_ge);
        }
        
        if (!TextUtils.isEmpty(str3)) {
            return str4.append(str3.reverse()).toString();
        }

        return null;
    }

猜你喜欢

转载自blog.csdn.net/lyl0530/article/details/81022374