力扣(LeetCode)415. 字符串相加
给定两个字符串形式的非负整数 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. 字符串相加的更多相关文章
- Java实现 LeetCode 415 字符串相加
415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...
- [LeetCode]415. 字符串相加、43. 字符串相乘
题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...
- 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数
最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...
- LeetCode:字符串相加【415】
LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只 ...
- 力扣Leetcode 45. 跳跃游戏 II - 贪心思想
这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...
- 刷题-力扣-541. 反转字符串 II
541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 力扣Leetcode 面试题56 - I. 数组中数字出现的次数
面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...
- 领扣(LeetCode)字符串相加 个人题解
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包 ...
随机推荐
- Oracle笔记 #01# 简单分页
rownum是Oracle为查询结果分配的有序编号(总是从1~n).言下之意,rownum字段本来并不存在于表中,而是经查询后才分配的. 举一个例子: SELECT rownum, name, pri ...
- uwsgi xml 配置
uwsgi 用来做nginx和应用之间的桥梁,负责接收nginx动态转发过来的用户请求,其配置方式有多种,我一般选择<xml>标签的形式 下面的这些配置仅限于ubuntu下用apt-get ...
- linux装sqlite3
下载sqlite3源码包 tar xvfz sqlite-src-3.3.5 cd sqlite-3.3.5 ./configure –no-tcl make python继续一次. apt inst ...
- python的shutil模块-文件的移动、复制、打包、压缩、解压等
参考https://www.cnblogs.com/xiangsikai/p/7787101.html os模块提供了对目录或者文件的新建.删除.查看文件属性,还提供了对文件以及目录的路径操作,比如说 ...
- 点击button后刷新了页面
今天遇到一个特别奇怪的事,在页面中使用button标签,添加了点击事件onclic,点击的时候倒是执行了绑定的方法,但页面被刷新了! 什么鬼?我没与提交表单啊! 原来,button默认具有提交表单的动 ...
- (3网络化部署)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
我们使用google提供的colab,对我们现有的GoNetwork进行适当修改,利用网络资源进行运算. 一.什么是 Colaboratory? Colaboratory 是一款研究工具,用于进行机器 ...
- android 系统 不深度休眠【转】
本文转载自:https://blog.csdn.net/fmc088/article/details/80401405 1.分析解析 android系统有earlysuspend和suspend两种休 ...
- sqlserver 触发器的运行关键字
触发器执行顺序根据 before 和 after 关键字决定. 使用before 关键字:触发器的执行是在数据的插入.更新或删除之前执行的.使用after关键字:触发器的执行是在数据的插入.更新或删除 ...
- 学习使用JUnit4进行单元测试
借用http://blog.csdn.net/andycpp/article/details/1327147等文章上面的例子和教程进行学习总结,自己敲了一遍代码,发现里面有些东西,可能版本原因,已经稍 ...
- Math.random 随机数方法
随机取数方法 Math.random() 表示0到1之间随机取一个数 <x< 小数 Math.random()* 表示0<x< parseInt(Math.random()*) ...