【leetcode】415. 字符串相加

給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。

注意:數組

num1 和num2 的長度都小於 5100.code

```num1 和num2 都只包含數字 0-9.```
```num1 和num2 都不包含任何前導零。```

你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字符串轉換爲整數形式。字符串

思路:it

1.把字符串以「,」分紅數組;
2.將2個數值,再分爲數組;
3.將兩個數組倒置;
4.按順序一一作和,超過10,下一位加1;
5.將result[0]==0,的數值去掉;
6.將result2轉爲字符串;
1.示例:
var str= "123";
var str2 ="234";
2.拆分爲數組:
arr1 = ['1','2','3'];
arr2 =['2','3','4'];
3.反序
arr1 = ['3','2','1'];
arr2 =['4','3','2'];
4.數組對應項相加,滿10前一位加1,刪掉當前位的十位:
result = ['7','5','3'];
5.數組反序,轉字符串,結果相加
result = '357'
實現代碼:
var addStrings = function(num1, num2) {
   /* 將數字轉化爲數組,並反序*/
   let arr1 = num1.split("").reverse();
   let arr2 = num2.split("").reverse();
   /* 判斷兩個數組的長度 */
   if (arr1.length >= arr2.length) {
       var result = [];
       result[0] = 0;
       for (var i = 0; i <= arr1.length - 1; i++) {
           if (arr2[i] == null) {
               arr2[i] = 0;
           }
           /* 將結果相加,滿10向前一位進1,並減去當前的值的十位 */
           result[i] = result[i] + Number(arr1[i]) + Number(arr2[i]);
           if (result[i] >= 10) {
               result[i] = result[i] - 10;
               result[i + 1] = 1;
           } else {
               result[i + 1] = 0;
           }
       }
   } else {
       var result = [];
       result[0] = 0;
       for (var i = 0; i <= arr2.length - 1; i++) {
           if (arr1[i] == null) {
               arr1[i] = 0;
           }
           result[i] = result[i] + Number(arr1[i]) + Number(arr2[i]);

           if (result[i] >= 10) {
               result[i] = result[i] - 10;
               result[i + 1] = 1;
           } else {
               if (i + 1 <= arr2.length - 1) {
                   result[i + 1] = 0
               }
           }
       }
   }
   result = result.reverse()
   if (result[0] == 0) {
       result.shift(0);
   }
   var result2 = '';
   for (let i = 0; i < result.length; i++) {
       result2 = result2 + result[i];
   }
   return result2;
};
相關文章
相關標籤/搜索