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

    题目链接

    415. 字符串相加

    题目分析

    这个题是个简单题,但是代码的写法可以有很多种。最基本的就是双指针同步去进行各位相加,然后用新的循环把多出来的那个数的剩余部分计算完。
    这样写的话代码会比较复杂,我们可以把这里合成一个循环,直到所有条件都不符合了才结束,这里所说的条件是以下三个

    • 字符串1长度结束
    • 字符串2长度结束
    • 进位为0

    这样写的话代码会精简非常非常多。

    代码实现

    实现一

    class Solution {
        public String addStrings(String num1, String num2) {
            int sum = 0;
            char[] str1 = num1.toCharArray();
            char[] str2 = num2.toCharArray();
            int i = str1.length - 1;
            int j = str2.length - 1;
            int count = 0;
            StringBuffer sb = new StringBuffer();
            while(i >= 0 && j >= 0){
                sb.append((((str1[i] - '0' + str2[j] - '0')) + count) % 10);
                if((str1[i] - '0' + str2[j] - '0' + count) >= 10){
                    count = 1;
                }else{
                    count = 0;
                }
                i--;
                j--;
            }
            while(i >= 0){
                sb.append((str1[i] - '0' + count) % 10);
                if(str1[i] - '0' + count >= 10){
                    count = 1;
                }else{
                    count = 0;
                }
                i--;
            }
            while(j >= 0){
                sb.append((str2[j] - '0' + count) % 10);
                if(str2[j] - '0' + count >= 10){
                    count = 1;
                }else{
                    count = 0;
                }
                j--;
            }
            if(count == 1){
                sb.append('1');
            }
            return sb.reverse().toString();
        }
    }
    

    实现二

    class Solution {
        public String addStrings(String num1, String num2) {
            StringBuilder sb = new StringBuilder();
            int carry = 0, i = num1.length()-1, j = num2.length()-1;
            while(i >= 0 || j >= 0 || carry != 0){
                if(i>=0) carry += num1.charAt(i--)-'0';
                if(j>=0) carry += num2.charAt(j--)-'0';
                sb.append(carry%10);
                carry /= 10;
            }
            return sb.reverse().toString();
        }
    }
    
  • 相关阅读:
    MySQL索引底层的实现
    mysql索引深入优化
    explain详解与索引最佳实践
    (MYSQL)回表查询原理,利用联合索引实现索引覆盖
    为什么重复值高的字段不能建索引(比如性别字段等)
    Spring的事务
    为什么要用Redis?Redis为什么这么快?
    spring AOP
    钩子教程
    钩子教程
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13424484.html
Copyright © 2011-2022 走看看