题解 | #大数加法#

大数加法

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

模拟手算求大数加法,效率超97%,空间超99%

    public String solve (String s, String t) {
        // 定义一个结果数组
        int i = Math.max(s.length(),t.length());
        char[] arr = new char[i+1];

        //定义两个遍历字符串的指针
        int p1 = s.length()-1;
        int p2 = t.length()-1;

        //定义一个进位变量
        int carry = 0;

        //按位求和
        while(i >= 1){
            int x1=0, x2=0;
            if(p1 >= 0){
                x1 = s.charAt(p1)-'0';
                p1--;
            }
            if(p2 >= 0){
                x2 = t.charAt(p2)-'0';
                p2--;
            }

            int sum = x1 + x2 + carry; //求和
            int r = sum % 10; //求余数
            carry = sum / 10; //求进位

            arr[i] = (char)(r +'0'); //保存余数
            i--; //计算下一个值
        }

        if(carry != 0){ //判断一下最后有没有进位
            arr[0] = (char)(carry+'0');
            return new String(arr);
        }else{
            return new String(arr,1,arr.length-1);
        }
    }
全部评论

相关推荐

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