题解 | #大数加法 java#

大数加法

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

相同的方法类似于链表的两数相加

  • 从后往前加,如果ii,jj没有越界,那就取当前的字符值,如果ss或者tt已经结束了,那就相当于加0
  • 对最后的数进行处理,返回的是直到前面出现不为0的字符下标到最后的长度子串
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // write code here
        StringBuilder sb = new StringBuilder();
        int n1 = s.length();
        int n2 = t.length();
        if (n1 == 0) {
            return t;
        } else if (n2 == 0) {
            return s;
        }
        int i = n1 - 1;
        int j = n2 - 1;
        int carry = 0;
        int len = Math.max(n1 , n2);
        while (len >= 0) {
            int num1 = i >= 0 ? s.charAt(i) - '0' : 0;
            int num2 = j >= 0 ? t.charAt(j) - '0' : 0;
            int sum = carry + num1 + num2;
            sb.append(sum % 10);
            carry = sum / 10;
            len--;
            i--;
            j--;
        }
        if (carry > 0) {
            sb.append(carry % 10);
        }
        String res = sb.reverse().toString();
        int k = 0;
        while (res.charAt(k) == '0') {
            if (k == res.length() - 1) {
                return "0";
            }
            k++;
        }
       return res.substring(k, res.length());
    }
}
全部评论

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务