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

注意:

num1 和num2 的长度都小于 5100.

num1 和num2 都只包含数字 0-9.

num1 和num2 都不包含任何前导零。

你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

java 基础版

class Solution {
public String addStrings(String num1, String num2) {
String res = "";
int s1c = num1.length();
int s2c = num2.length();
if(s1c>=s2c) {
int diff = s1c-s2c;
String temp = "";
for(int i=0;i<diff;i++) {
temp += "0";
}
num2 = temp+num2;
char[] cs1 = num1.toCharArray();
char[] cs2 = num2.toCharArray();
int flag=0;
for(int i = cs1.length-1;i>=0;i--) {
System.out.println((cs1[i]-48+cs2[i]-48+flag));
if(flag+cs1[i]-48+cs2[i]-48>=10) {
res = (flag+cs1[i]-48+cs2[i]-48-10) + res;
flag=1;
}else {
res = (flag+cs1[i]-48+cs2[i]-48) + res;
flag=0;
}
}
if(flag == 1 ) {
res = 1+res;
}
}else {
int diff = s2c-s1c;
String temp = "";
for(int i=0;i<diff;i++) {
temp += "0";
}
num1 = temp+num1;
char[] cs1 = num1.toCharArray();
char[] cs2 = num2.toCharArray();
int flag=0;
for(int i = cs1.length-1;i>=0;i--) {
System.out.println((cs1[i]-48+cs2[i]-48+flag));
if(flag+cs1[i]-48+cs2[i]-48>=10) {
res = (flag+cs1[i]-48+cs2[i]-48-10) + res;
flag=1;
}else {
res = (flag+cs1[i]-48+cs2[i]-48) + res;
flag=0;
}
}
if(flag == 1 ) {
res = 1+res;
}
}
return res;
}
}

java 升级版

字符串加法、链表加法、二进制加法 都可以如此做

class Solution {
public String addStrings(String num1, String num2) {
StringBuilder build = new StringBuilder();
int s1c = num1.length()-1;
int s2c = num2.length()-1;
int carry = 0; //进位
while(s1c>=0 || s2c>=0 || carry !=0) {
if(s1c>=0) {
carry += num1.charAt(s1c--)-'0';
}
if(s2c>=0) {
carry += num2.charAt(s2c--)-'0';
}
build.append(carry%10); //各位数字
carry /=10; // 进位数字
} return build.reverse().toString();
}
}

运行结果

力扣(LeetCode)415. 字符串相加的更多相关文章

  1. Java实现 LeetCode 415 字符串相加

    415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...

  2. [LeetCode]415. 字符串相加、43. 字符串相乘

    题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...

  3. 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数

    最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...

  4. LeetCode:字符串相加【415】

    LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只 ...

  5. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  6. 刷题-力扣-541. 反转字符串 II

    541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...

  7. 【力扣leetcode】-787. K站中转内最便宜的航班

    题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...

  8. 力扣Leetcode 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...

  9. 领扣(LeetCode)字符串相加 个人题解

    给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包 ...

随机推荐

  1. spring框架入门之一

    一.什么是Spring框架 1.什么是Spring Spring框架是个一个全栈的框架.意思就是使用Spring的框架可以开发web层,service层还有dao层. 本质:Spring就是一个对象的 ...

  2. appJar 界面效果

    appJar from appJar import gui app = gui() def main(): app.setLocation(200, 200) app.addLabel('2333', ...

  3. Docker学习笔记之Docker的数据管理和存储

    0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...

  4. Golang并发编程优势与核心goroutine及注意细节

    Go语言为并发编程而内置的上层API基于CSP(communication sequential processes,顺序通信进程)模型.这就意味着显式锁都是可以避免的,比如资源竞争,比如多个进程同时 ...

  5. P4381 [IOI2008]Island(基环树+单调队列优化dp)

    P4381 [IOI2008]Island 题意:求图中所有基环树的直径和 我们对每棵基环树分别计算答案. 首先我们先bfs找环(dfs易爆栈) 蓝后我们处理直径 直径不在环上,就在环上某点的子树上 ...

  6. gdb远程debug A syntax error in expression, near `variable)'.

    今天调试有个linux环境的应用时,gdb提示A syntax error in expression, near `variable)'.,最后经查,gdb版本过低(比如7.2)或者源代码不匹配所致 ...

  7. golang BDD testcase framework.

    BDD What is Behaviour Driven Development and why should I care? Behaviour Driven Development (BDD) i ...

  8. debug代码时遇到循环时提高效率方法

    在循环时,需要查看uid=uid=12007255时的代码执行情况 可以在循环代码中加入 if((Long)map.get("uid") == 12007255){ System. ...

  9. Codeforces Round 500 (Div 2) Solution

    从这里开始 题目地址 瞎扯 Problem A Piles With Stones Problem B And Problem C Photo of The Sky Problem D Chemica ...

  10. 我写的RunTime函数之一,为类的某个属性赋值以及方法交换

      1,为属性赋值 #import <UIKit/UIKit.h> @interface UIViewController (RunTime) - (BOOL)setPropertyVal ...