• [LeetCode] 415. Add Strings


    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

    Note:

    1. The length of both num1 and num2 is < 5100.
    2. Both num1 and num2 contains only digits 0-9.
    3. Both num1 and num2 does not contain any leading zero.
    4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

    字符串相加。题目即是题意。影子题67,这个题是十进制加法,67题是二进制加法。例子,

    "13" + "79" = "92"

    这个题没有任何算法,考察的是字符串的相关操作。Java和JS的做法略微有一些区别。在Java里面因为有StringBuilder的关系,所以结果里面的每一位上的数字可以被append;JS里面则是用数组代替了StringBuilder的功用。但是两种语言实现的思想是一样的。

    时间O(n)

    空间O(n)

    Java实现

     1 class Solution {
     2     public String addStrings(String num1, String num2) {
     3         int i = num1.length() - 1;
     4         int j = num2.length() - 1;
     5         int carry = 0;
     6         StringBuilder sb = new StringBuilder();
     7         while (i >= 0 || j >= 0 || carry == 1) {
     8             int a = i >= 0 ? num1.charAt(i--) - '0' : 0;
     9             int b = j >= 0 ? num2.charAt(j--) - '0' : 0;
    10             int sum = a + b + carry;
    11             sb.append(sum % 10);
    12             carry = sum / 10;
    13         }
    14         return sb.reverse().toString();
    15     }
    16 }

    JavaScript实现

     1 /**
     2  * @param {string} num1
     3  * @param {string} num2
     4  * @return {string}
     5  */
     6 var addStrings = function(num1, num2) {
     7     let i = num1.length - 1;
     8     let j = num2.length - 1;
     9     let carry = 0;
    10     let res = [];
    11     while (i >= 0 || j >= 0 || carry == 1) {
    12         let digit1 = i < 0 ? 0 : num1.charAt(i) - '0';
    13         let digit2 = j < 0 ? 0 : num2.charAt(j) - '0';
    14         let digitsSum = digit1 + digit2 + carry;
    15         res.push(digitsSum % 10);
    16         carry = Math.floor(digitsSum / 10);
    17         i--;
    18         j--;
    19     }
    20     return res.reverse().join('');
    21 };

    LeetCode 题目总结

  • 相关阅读:
    P4910 帕秋莉的手环
    P3216 [HNOI2011]数学作业
    洛谷 P2894 [USACO08FEB]酒店
    [网络流24题]魔术球问题
    [网络流24题]飞行员配对方案问题
    [网络流24题]最小路径覆盖问题
    洛谷 P1503鬼子进村
    BZOJ 3631: [JLOI2014]松鼠的新家
    洛谷 P2922 [USACO08DEC]秘密消息Secret Message
    洛谷 P1379 八数码难题
  • 原文地址:https://www.cnblogs.com/cnoodle/p/12571976.html
Copyright © 2020-2023  润新知