1218-2019-LEETCODE-415-文字列の連結

キャリー質問が追加直接書き込むことができない、処理しませんでした+ =(N1 + N2) %10; 書き込み追加する+ =(ADD +(N1 + N2)%10);
キャリーの問題は、それぞれの前に(=、キャリーを確保するために、キャリー+と現在の2桁)/ 10;
と自分の文よりも多くのことを書きます。

public String addStrings(String num1, String num2) {
        int len1 = num1.length();
        int len2 = num2.length();
        StringBuilder stringBuilder = new StringBuilder("");
        int n1 = 0;
        int n2 = 0;
        int add = 0;
        int res = 0;
        for (int i = len1 - 1,j = len2 - 1; i >= 0 || j >= 0 ; i--,j--) {
            res = add;
            if (i >= 0){
                n1 = num1.charAt(i) - '0';
            }else {
                n1 = 0;
            }
            if (j >= 0){
                n2 = num2.charAt(j) - '0';
            }else {
                n2 = 0;
            }
            //修改add += (n1 + n2)/10; 为 add = (add + (n1 + n2))/ 10;
            add = (add + (n1 + n2))/ 10;
            res = (res + (n1 + n2)) % 10;
            stringBuilder.insert(0,res);
        }
        if (add != 0){
            stringBuilder.insert(0,add);
        }
        return stringBuilder.toString();
    }

最適化されたバージョン出典:
https://leetcode-cn.com/problems/add-strings/solution/add-strings-shuang-zhi-zhen-fa-by-jyd/

public String addStrings(String num1, String num2) {
        StringBuilder res = new StringBuilder("");
        int i = num1.length() - 1, j = num2.length() - 1, carry = 0;
        while(i >= 0 || j >= 0){
            int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;
            int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;
            int tmp = n1 + n2 + carry;
            carry = tmp / 10;
            res.append(tmp % 10);
            i--; j--;
        }
        if(carry == 1) res.append(1);
        return res.reverse().toString();
    }
公開された98元の記事 ウォンの賞賛0 ビュー2217

おすすめ

転載: blog.csdn.net/weixin_43221993/article/details/103642670