Add Strings大整数加法十进制求和 & Add Binary二进制求和
[抄题]:
以字符串的形式给出两个非负整数 num1
和 num2
,返回 num1
和 num2
的和。 比如一个50位+一个100位。
给定 num1 = "123"
,num2 = "45"
返回 "168"
[暴力解法]:
时间分析:
空间分析:
[思维问题]:
[一句话思路]:
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- sum求和或者循环退出的条件都是i j >= 0,因为是从后往前做减法的,二者中只要有一个数不为0就要继续操作,因此为或。第一次见。位数-1直到没有为止。不熟悉其思想。
- 字母 - 字母'0'= 原本的数字,以前都没有理解
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
- 套路模板:求sum,取%取/,加上carry
- 新加的位数应该放在前面而不是后面,定式思维了
[复杂度]:Time complexity: O(n) Space complexity: O(1)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
- 一句分号结束的话只能声明一个数据类型int, 不能两个(一个分号一个int)
int m;
int n;可以
int m, n;可以
int m , int n;一句分号结束的话声明了2个数据类型int,不行
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
2. Add Two Numbers反向加数:也是数字游戏
[代码风格] :
public class Solution {
/**
* @param num1: a non-negative integers
* @param num2: a non-negative integers
* @return: return sum of num1 and num2
*/
public String addStrings(String num1, String num2) {
String ans = "";
int carry = 0;// i or j//?
for (int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0; i--, j--) {
int sum = carry;
sum += (i >= 0) ? num1.charAt(i) - '0': 0;
sum += (j >= 0) ? num2.charAt(j) - '0': 0;
ans = sum % 10 + ans;
carry = sum / 10;
} if (carry != 0) {
ans = carry + ans;
} return ans;
}
}
[抄题]:
给定两个二进制字符串,返回他们的和(用二进制表示)。
a = 11
b = 1
返回 100
[暴力解法]:
时间分析:
空间分析:
[思维问题]:
[一句话思路]:
同上,把除数改成2了
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- 字符串是无法新建类型的,所以直接初始化为空串“”即可
- i, j 都是从最后一位开始,倒序相加的
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
[复杂度]:Time complexity: O() Space complexity: O()
[英文数据结构或算法,为什么不用别的数据结构或算法]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
Add Strings大整数加法十进制求和 & Add Binary二进制求和的更多相关文章
- # Leetcode 67:Add Binary(二进制求和)
Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...
- HDU1002——大整数加法
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...
- openjudge计算概论-大整数加法
/*=====================================================================1004:大整数加法总时间限制: 1000ms 内存限制: ...
- A——大整数加法(HDU1002)
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...
- 2981:大整数加法-poj
2981:大整数加法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...
- AC日记——大整数加法 openjudge 1.6 10
10:大整数加法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 ...
- POJ 2506 Tiling(递推+大整数加法)
http://poj.org/problem?id=2506 题意: 思路:递推.a[i]=a[i-1]+2*a[i-2]. 计算的时候是大整数加法.错了好久,忘记考虑1了...晕倒. #includ ...
- Javascript实现大整数加法
记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行.哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈.今天在刷算法的时候,无意中看到了为什么 ...
随机推荐
- Linux 键盘输入#的时候变成£
/********************************************************************************* * Linux 键盘输入#的时候变 ...
- selenium-java,暂停功能
暂停/开始应用程序 public class Common_method { public void kill_chromedriver(){ Runtime runtime=Runtime.getR ...
- 简单实现MemCachedUtil
package com.chauvet.utils.memcached; import com.chauvet.utils.ConfigUtil; import com.danga.MemCached ...
- bzoj 4570: [Scoi2016]妖怪 凸包
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4570 题解 我们知道如果一个怪物要取到攻击力的最大值,那么一定是把防御力都转化了 所以我 ...
- ASP.NET 程序优化
一.SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快.如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多. ...
- docker基于Dockerfile命令创建支持ssh服务的镜像
首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...
- 刷新SQL Server所有视图、函数、存储过程
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- 使用SharpZip压缩与解压缩
使用SharpZip压缩与解压缩 编写人:左丘文 2015-4-11 大家在做项目时,相信会经常性的会遇到要对数据流或dataset byte[] 或文件进行压缩和解压缩,比如:利用webservic ...
- storyboard貌似不错
冷静下来看了下,貌似聽简单,蛋疼,忙完才发现,弄的时候咋没发现,靠 push,present等可以全部用下面这个api搞定 - (void)performSegueWithIdentifier:(NS ...
- 操作数据类m
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...