LeetCode:字符串相加【415】

LeetCode:字符串相加【415】

题目描述

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

题目分析

  这道题其实很简单,我们要搞清楚手工计算两数之和的流程。两数相加,和如果大于10的话就有进位,进位最高为1,默认为0,该位相加的和应为sum%10

  小学数学题哦,不多解释了!

Java题解

    public static String addStrings(String num1, String num2) {
        int ptrNum1 = num1.length()-1 ;
        int ptrNum2 = num2.length()-1 ;
        int count = 0;
        StringBuilder result = new StringBuilder();
        //1、从两数个位开始相加
        while(ptrNum1>=0&&ptrNum2>=0){
            //[a、换算成数字]
            int a = num1.charAt(ptrNum1)-‘0‘;
            int b = num2.charAt(ptrNum2)-‘0‘;
            //[b、计算位数之和,包含进位count]
            int sum = a+b+count;
            count = 0;
            //[c、如果和大于9,则有新进位]
            if(sum>9){
                count =1;
                sum-=10;
            }
            //[d、将处理后sum插入结果]
            result.insert(0,sum);
            ptrNum1--;
            ptrNum2--;
        }
        //2、假如数字1还有高位未相加
        while(ptrNum1>=0){
            //[a、仅仅与进位值相加]
            int a =num1.charAt(ptrNum1)-‘0‘+count;
            count = 0;
            if(a>=10){
                count =1;
                a-=10;
            }
            //[b、将处理后sum插入结果]
            result.insert(0,a);
            ptrNum1--;
        }
        //3、加入数字2还有高位未相加
        while(ptrNum2>=0){
            int a =num2.charAt(ptrNum2)-‘0‘+count;
            count = 0;
            if(a>10){
                count =1;
                a-=10;
            }
            result.insert(0,a);
            ptrNum2--;
        }
        //4、考虑最高位进位的情况
        if(count==1)
            result.append("1");
        return result.toString();
    }

  

原文地址:https://www.cnblogs.com/MrSaver/p/11609516.html

时间: 2024-10-09 01:27:30

LeetCode:字符串相加【415】的相关文章

[LeetCode] 415. Add Strings 字符串相加

Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100. Both num1 and num2 contains only digits 0-9. Both num1 and num2 does not contain any leading zero.

LeetCode - 字符串数字相乘与相加

43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num2 = "3" 输出: "6" 示例 2: 输入: num1 = "123", num2 = "456" 输出: "56088" 说明: num1 和 num2 的长度小于110. num1

C语言关于利用sscanf实现字符串相加减

#include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "99999"; char str2[10] = "1111111"; char str[30]; int k = 0, i = 0, j = 0; for (k = 0; k < 30&&i<strlen(str1);){ str[k++] = str1[i+

leetcode 字符串分割对称

1 public class Solution { 2 public List<List<String>> partition(String s) { 3 int len=s.length(); 4 boolean dp[][]=new boolean[len][len]; 5 get(dp,s); 6 ArrayList<ArrayList<String>> res=new ArrayList<ArrayList<String>>(

T-SQL字符串相加之后被截断的那点事

本文出处:http://www.cnblogs.com/wy123/p/6217772.html 字符串自身相加, 虽然赋值给了varchar(max)类型的变了,在某些特殊情况下仍然会被“截断”,这到底是varchar(max)长度的问题还是操作的问题? 1,两个不超过8000长度的字符串自身相加,其结果长度超过8000之后会被截断: 不多说,直接上例子:定义一个字符串,赋值给 varchar(max)类型的变了,字符创长度为4040没有,任何问题. 把4040长度的字符串复制一份出来,也就是

php 整型 和 字符串相加

这个有好几种算法,例如: $tr = 'aaaaa'; 转成 0 $tr = 'a123aa'; 转成 0 $tr = '22aaa'; 转成 22 就是说,当匹配到字符串中,不为整形,会继续匹配,直到遇到字符,后面的全部转为0,与前面相加.  例1: $str = "123stringA";$str2 = "123xx797stringB"; $result = $str + $str2; //$result = 456(123+123)  例2: $str =

hdoj 1715 大菲波数 【字符串相加】

策略 :如题: 为什么昨天比赛的时候就没想出来, 模糊点 : char c = a: c += 1; //此时c = 'b': 注意:我是把最低位放到数组的较靠后的位置 AC by: SWS 链接http://acm.hdu.edu.cn/showproblem.php?pid=1715 代码: #include<stdio.h> #include<string.h> char a[300], b[300], c[300]; void f(int n){ strcpy(a, &qu

【leetcode 字符串处理】Compare Version Numbers

[leetcode 字符串处理]Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u012162613 1.题目 Compare two version numbers version1 and version1. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume

字符串相加的注意点

*下面的代码所示: 代码1: 数字字符串参与运算的情况1 1 console.log(1 + "2" + "2"); 很明显输出的是122,并且: console.log(typeof (1 + "2" + "2")); 输出的是string类型.上面的结果是毫无疑问的. 代码2: 数字字符串参与运算的情况2 console.log(1 + +"2" + "2"); console.lo