LeetCode:文字列の連結[415]
タイトル説明
その非負整数NUM1とNUM2、および計算の形で二つの文字列与えられました。
注意:
NUM1とNUM2長さが未満5100です
NUM1とNUM2は数字のみが0-9。含ま
NUM1とNUM2先頭の0が含まれていません。
あなたは、文字列が整数の入力に直接変換することはできません、組み込みのBigIntegerのライブラリーのいずれかを使用することはできません。
トピック分析
この質問は非常に簡単です、我々がしなければなら手動で二つの数とプロセスを計算把握します。2つの数値を加算し、10よりも大きいがある場合、キャリーは、1の最大値を運ぶ、デフォルトは0であり、このビットが追加されるべきであり、10%のSUM。
小学校算数ああ、あまり説明しません!
問題のJavaソリューション
AddStrings静的ストリングパブリック(NUM1文字列、文字列NUM2){ int型= ptrNum1 num1.length() - 1; INT = ptrNum2 num2.length() - 1; int型COUNT = 0; のStringBuilder StringBuilderの新しい新しい結果=(); // 1。数から2和ビットから しばらく(ptrNum1> = 0 && ptrNum2> = 0){ // [A、デジタルに変換される] INT = A num1.charAt(ptrNum1) - '0'; INT = B num2.charAt( ptrNum2) - '0'; // [B、およびキャリーCOUNTを含む、ビットの数を計算する] INT合計= A + B + COUNT; COUNT = 0; // [C、および9よりも大きい場合、新しいバイナリ] IF(SUM> 9){ COUNT = 1; sum- = 10; } // [D、後処理結果挿入和] result.insert(0、合計); ptrNum1--; ptrNum2--; } // 2、多数非添加がある場合 、一方(ptrNum1> = 0) { // [A、キャリー和の値だけ] INT = A num1.charAt(ptrNum1) - '0' + COUNT; COUNT = 0; IF(A> = 10){ COUNT = 1; A- = 10。 } // [処理結果和挿入した後B、] result.insert(0、A)を、 ptrNum1--; } // 3、数2の非高付加が追加される 一方(ptrNum2> = 0){ int型A = num2.charAt(ptrNum2) - '0 ' +数えます。 0 = COUNT; IF(A> 10){ COUNT 1 =。 ; A- = 10; } result.insert(0、A); ptrNum2--; } // 4、場合を考える最上位ビット桁上げビット IF(COUNT == 1) result.appendを(」1" )。 result.toStringリターン(); }