zoukankan      html  css  js  c++  java
  • Add Strings大整数加法十进制求和 & Add Binary二进制求和

    [抄题]:

    以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和。 比如一个50位+一个100位。

    给定 num1 = "123",num2 = "45" 
    返回 "168"

     [暴力解法]:

    时间分析:

    空间分析:

    [思维问题]:

    [一句话思路]:

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    1. sum求和或者循环退出的条件都是i j >= 0,因为是从后往前做减法的,二者中只要有一个数不为0就要继续操作,因此为或。第一次见。位数-1直到没有为止。不熟悉其思想。
    2. 字母 - 字母'0'= 原本的数字,以前都没有理解

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    1. 套路模板:求sum,取%取/,加上carry
    2. 新加的位数应该放在前面而不是后面,定式思维了

    [复杂度]:Time complexity: O(n) Space complexity: O(1)

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    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;
        }
    }
    View Code

    [抄题]:

    给定两个二进制字符串,返回他们的和(用二进制表示)。

    a = 11

    b = 1

    返回 100

     [暴力解法]:

    时间分析:

    空间分析:

    [思维问题]:

    [一句话思路]:

    同上,把除数改成2了

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    1. 字符串是无法新建类型的,所以直接初始化为空串“”即可
    2. i, j 都是从最后一位开始,倒序相加的

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    [复杂度]:Time complexity: O() Space complexity: O()

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

     [代码风格] :

  • 相关阅读:
    使用docker部署zabbix
    进入容器脚本
    Docker安装
    docker命令总结
    zbb20180827 Spring中ClassPathXmlApplicationContext类的简单使用,main方法加载application.xml文件
    zbb20180824 spring ioc aop 例子
    tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].
    zbb20180815 网盘搜索引擎
    Java字节码指令收集大全
    zbb20180716 SpringBoot 使用feign时报错Service id not legal hostname
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8461329.html
Copyright © 2011-2022 走看看