C/C++説明LeetCode 415.文字列の加算

6342 ワード

415.文字列加算
皆さん、こんにちは.ān jié)、CSDNの中で学習の点滴の過程を記録して、時間が経つにつれて、未来は期限があって、がんばれ~ブロガーは現在CSDNの中でブログを書くだけで、唯一のブログの更新の住所は:
本论原创はホホ官劼で、オリジナルを支持してください.一部のプラットフォームはずっと悪意を持ってブロガーの文章を盗んでいます!!
難易度214コレクション共有を英語の注目フィードバックに切り替えます
2つの文字列形式の非負の整数num1およびnum2が与えられ、それらの和が計算される.
注意:
  • num1およびnum2の長いはいずれも5100未満である.
  • num1およびnum2は、いずれも0-9という数字のみを含む.
  • num1およびnum2は、いずれもプリアンブルゼロを含まない.
  • 内蔵BigIntegerライブラリを使用することはできません.入力した文字列を整数に変換することはできません.

  • 問題解
    大数を加算して、直接シミュレーションすればいいです.
    class Solution {
    public:
        string addStrings(string num1, string num2) {
            string ans = "";
            int len1 = num1.length();
            int len2 = num2.length();
            int i , j ,carry; // carry    
            carry = 0;
            for(i = len1 -1, j = len2 -1 ; i >= 0 || j >= 0; i--,j--){
                int n1 = i > -1 ? int(num1[i] - '0') : 0;;
                int n2 = j > -1 ? int(num2[j] - '0') : 0;
                int sum = carry + n1 + n2;
                ans = char(sum%10 + '0') + ans;
                carry = sum / 10;
                
            }
            if(i <= -1 && j <= -1 && carry != 0)
                ans = char(carry + '0') + ans;
            return ans;
        }
    };