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();
        }
    }
    
  • 相关阅读:
    Android中的httpclient框架发送get请求
    成员函数的重载&&隐藏&&覆盖
    子墨庖丁Android的ActionBar源代码分析 (一)实例化
    Hadoop2.x介绍与源代码编译
    NFS 服务器的配置
    tftp 服务器的配置
    LINUX内核及应用程序移植工作
    u-boot 移植工作目录
    Linux 下工作用户及环境
    zless
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13424484.html
Copyright © 2011-2022 走看看