题解 | #大数加法#

大数加法

http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

alt



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // write code here
        // 定义两个字符串的长度
        int sLen = s.length();
        int tLen = t.length();
        
        // 定义和的数字的长度
        int sumLen = Math.max(sLen,tLen) + 1;
        // 定义和数组
        char[] sumArray = new char[sumLen];
        // 初始化元素
        for(int i = 0 ; i < sumLen; i++){
            sumArray[i] = '0';
        }
        // 定义sum指针
        int sumIndex = sumLen -1;

        // 定义和
        int sum = 0;
        sLen--;
        tLen--;
        while(sLen >=0 && tLen >=0){
            // 求和 两个数的和加上进位
            sum = (s.charAt(sLen--)-'0') + (t.charAt(tLen--) - '0') + sumArray[sumIndex] - '0';
            // 求该位结果
            sumArray[sumIndex--] =(char)((sum % 10) + '0');
            // 求进位
            sumArray[sumIndex] =(char) (sum / 10 + '0');
        }
        while(sLen >= 0){
            sum = (s.charAt(sLen--) - '0') + sumArray[sumIndex] - '0';
            sumArray[sumIndex --] = (char)((sum % 10) + '0');
            sumArray[sumIndex] =(char) (sum / 10 + '0');
        }
        while(tLen >= 0){
            sum = (t.charAt(tLen--) - '0') + sumArray[sumIndex] - '0';
            sumArray[sumIndex --] = (char)((sum % 10) + '0');
            sumArray[sumIndex] =(char) (sum / 10 + '0');
        }
        if(sumArray[0] == '0'){
            return new String(sumArray,1,sumLen-1);
        }else{
            return new String(sumArray,0,sumLen);
        }
    }
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务