• 字符串相加


    Leetcode 题目描述

    给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

    注意:

    num1 和num2 的长度都小于 5100.
    num1 和num2 都只包含数字 0-9.
    num1 和num2 都不包含任何前导零。
    你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
    

    第一种解法

    采用小学所学的竖式加法进行计算。从低位开始进行计算,如果进位则添加到高位。

    在计算的过程中需要对每个字符串形式的字符进行转换,然后参与进行计算。

    遍历只需要(O(n))的时间

    • 加法中的一个特性是如果两个字符串其中有一个没有结束,那么加法的就会继续进行
    • 加法中的另外一个特性是如果进行进位不为0,那么加法也会继续进行。直接到进位为0

    demo

    class Solution {
        public String addStrings(String num1, String num2) {
            int i = num1.length()-1;
            int j = num2.length()-1;
            int add = 0;
            StringBuilder sb = new StringBuilder();
    
            while(i >= 0 || j >=0 || add !=0){
                if(i >= 0) add += num1.charAt(i--) - '0';
                if(j >= 0) add += num2.charAt(j--) - '0';
                sb.append(add%10);
                add /= 10;
            }
            return sb.reverse().toString();
        }
    }
    
  • 相关阅读:
    抽象工厂
    组合和继承
    Mysql 设置远程连接
    websocket
    redis 持久化
    django urls
    git gitignore
    Mysql 系统表
    cudnn升级之后caffe无法训练的问题
    python numpy初始化一个图像矩阵
  • 原文地址:https://www.cnblogs.com/Di-iD/p/13784571.html
Copyright © 2020-2023  润新知