[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 ...
随机推荐
- 浅谈:什么是.NET
.NET是 Microsoft XML Web services 平台.XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统.设备或编 ...
- 【NOI2015】荷马史诗 - 哈夫曼树
题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...
- CSS3动画旋转——(图片360°旋转)
今天在重构网页特效的时候,想着用到一个css3的旋转特效.简单来一个demo. html <div class="box"> <img src="./y ...
- 【笔记】springCloud--Alibaba--nacos介绍----启动报错解决方案
Nacos介绍 · 欢迎来到 Nacos 的世界! · Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管 ...
- 国人开源了一款超好用的 Redis 客户端,真香!!
大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...
- css3 属性 text-overflow 实现截取多余文字内容 以省略号来代替多余内容
css3 属性 text-overflow: ellipsis 前言 正文 结束语 前言 我们在设计网站的时候有时会遇到这样一个需求:因为页面空间大小的问题,需要将多余的文字隐藏起来,并以省略号代替, ...
- AWS 学习笔记之 VPC
原文:https://ericfu.me/aws-notes-vpc/ VPC 把 VPC 想象成一个逻辑上的数据中心 包含一个 IGW (Internet Gateway)或者 Virtual Pr ...
- ceph scrub error解决方案
参考链接:https://blog.csdn.net/u010317005/article/details/79242794 问题现象: 原因分析: 数据的不一致性(inconsistent)指对象的 ...
- ubuntu apt-mirror 同步源到本地
1.下载 apt-mirror apt-get install apt-mirror 2.修改配置 root@wangjq:/wangjq# cat /etc/apt/mirror.list##### ...
- 一台主机的最大TCP连接数是多少?
在没接触过这个问题之前,自然会想到服务器端连接数是由服务器端口号限制的.但这其实是一个很严重的误解,要解决这个问题,必须理解socket的连接过程. 以python为例,tcp服务端socket需要经 ...