zoukankan      html  css  js  c++  java
  • 字符串相加

    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();
        }
    }
    
  • 相关阅读:
    Hibernate 总结
    Mybatis 总结
    Mybatis原生DataSource源码解析
    Spring Cloud 服务安全
    Mybatis原生源码解析
    最好的Http客户端--Feign 源码分析
    Zuul整合Hystrix断路器
    Zuul核心-预定义Filter
    Feign性能优化
    Feign整合Ribbon负载均衡
  • 原文地址:https://www.cnblogs.com/Di-iD/p/13784571.html
Copyright © 2011-2022 走看看