[LeetCode]415. 字符串相加、43. 字符串相乘
题目 415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
题解
维护一个temp表示当前两数相加+上一个进位的和。
每次更新结果的一位。
注意终止条件。
最后将结果串reverse()。
代码
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder str = new StringBuilder();
int temp =0;
int i=num1.length()-1;
int j=num2.length()-1;
while(i>=0||j>=0||temp>0){
int n1 = i>=0? num1.charAt(i--)-'0':0;
int n2 = j>=0? num2.charAt(j--)-'0':0;
temp +=n1+n2;
str.append(temp%10);
temp/=10;
}
return str.reverse().toString();
}
}
题目 43. 字符串相乘
题解
- num1长度为M,num2长度为N,则结果最长长度M+N。
- 竖式相加优化:num1[i] x num2[j] 的结果tmp最长两位,其第一位位于 res[i+j],第二位位于 res[i+j+1]。
- 故每次更新tmp=num1[i] x num2[j]+进位,然后更新 res[i+j]、res[i+j+1]两位,注意
res[i+j]+=tmp/10;是+=。
-用整型数组存结果,最后StringBuilder连接结果即可。

图片来源:https://leetcode-cn.com/problems/multiply-strings/solution/you-hua-ban-shu-shi-da-bai-994-by-breezean/
代码
class Solution {
public String multiply(String num1, String num2) {
int len=num1.length()+num2.length();
int[] res = new int[len];
for(int i=num1.length()-1;i>=0;--i){
for(int j = num2.length()-1;j>=0;--j){
int tmp = (num1.charAt(i)-'0')*(num2.charAt(j)-'0')+res[i+j+1];//方便进位加入十位统一处理
res[i+j+1]=tmp%10;
res[i+j]+=tmp/10; //具体看竖试可理解
}
}
StringBuilder product = new StringBuilder();
int begPos = 0;
while(res[begPos]==0&&begPos<len-1){
begPos++;
}
for(int i=begPos;i<len;++i){
product.append(res[i]);
}
return product.toString();
}
}
[LeetCode]415. 字符串相加、43. 字符串相乘的更多相关文章
- 代码题(59)— 字符串相加、字符串相乘、打印最大n位数
1.415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 思路:和链表相加类似,求进位. class Solution { public: string addS ...
- Java中字符串相加和字符串常量相加区别
有一道这样的程序: public class TestStringDemo { public static void main(String[] args) { String s1 = "P ...
- Python字符串相加以及字符串格式化
1.在Python中字符串a占用一块内存地址,字符串b也占用一块内存地址,当字符串a+b时,又会在内存空间中开辟一块新的地址用来存放a+b. a 地址一 b 地址二 a+b 地址三 因此内存中就占了三 ...
- LeetCode 43. 字符串相乘(Multiply Strings)
43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- LeetCode:字符串相加【415】
LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只 ...
- Java实现 LeetCode 415 字符串相加
415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...
- Java实现 LeetCode 43 字符串相乘
43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2& ...
- T-SQL字符串相加之后被截断的那点事
本文出处:http://www.cnblogs.com/wy123/p/6217772.html 字符串自身相加, 虽然赋值给了varchar(max)类型的变量,在某些特殊情况下仍然会被“截断”,这 ...
- C语言关于利用sscanf实现字符串相加减
#include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "9999 ...
随机推荐
- 喵的Unity游戏开发之路 - 玩家控制下的球的滑动
- 机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...
- Typescript node starter 3. App Router Controller
Request request对象表示HTTP请求,并具有请求query字符串.参数.body.HTTP headers等的属性.除了添加新的属性和方法外,还包含原型的属性和方法. 随着系列文章的发布 ...
- NOSQL基础
一.mongoDB介绍和使用 1.分布式文件储存数据库,使用C++开发的,可以存储任意数据(文件),允许在服务器端执行脚本,使用JSON形式储存数据{key:value} 2.支持的编程语言有:PHP ...
- Vue管理系统前端系列一vue-cli4.x 初始化项目
目录 项目介绍 技术基础 开发环境 安装工具 快速原型开发 创建项目 配置相关说明 目录结构 项目介绍 lion-ui 是一个基于 RBAC 的管理系统前端项目,采用 vue 和 element-ui ...
- JavaScript学习系列博客_12_JavaScript中的break、continue关键字
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在sw ...
- python数据类型和运算符
一.python类型判断 type,isinstance type(变量或常量):返回数据类型 a = 23.3print(type(a))b = 2e3print(b, type(b))输出: &l ...
- 前端 的一些css的写法
攒一下小技巧 1.select 默认提示但是不显示在选择列表中 <option selected="selected" disabled="disabled&quo ...
- FormData格式的数据
向服务器提交的是FormData格式的数据 || 必须添加以下两个配置项 contentType:false, processData:false,
- Autoit 使用
一.Autoit 上传文件. 1.常用语法 - WinActivate("title") 聚焦到指定活动窗口 - ControlFocus ( "titl ...