LeetCode415-字符串相机(水题)

Posted 朋友圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode415-字符串相机(水题)相关的知识,希望对你有一定的参考价值。

两个很大的字符串相加。

 

主要的问题是,怎么把每一位相加,然后进位处理。

 

因为是加法,进位只会多一位。

 

所有上述问题,只要把字符串倒转过来,每位相加,再放到stringbuilder里就好了。

 

比如123456+67,这种长度不一样的。

 

就是

654321+

76

 

6+7 = 3,进1

5+6+1=2 进1

4+1=5

最后就是

325321

倒转就是123523

 

如果其中有一个数加完了,就把这个数剩下的全append进去.

有可能循环之后,最后一位才是进位,要把最后的进位加上!

 

public class LeetCode415 {

    public static void main(String[] args) {
        System.out.println(addStrings("1","9"));
    }

    public static String addStrings(String num1, String num2) {

        StringBuilder sb = new StringBuilder();

        int len1= num1.length()-1;
        int len2= num2.length()-1;

        //进位
        int count = 0;

        //倒着相加,从后面遍历
        while(0<=len1&&0<=len2){

            char temp1 = num1.charAt(len1);
            char temp2 = num2.charAt(len2);
            int temp = ((int)temp1-48)+((int)temp2-48)+count;
            //用完之后设为0
            count=0;
            if(temp>=10){
                count=1;
                temp%=10;
            }
            sb.append((char)(temp+48));

            len1--;
            len2--;

        }

        while (len1>=0){
            char temp1 = num1.charAt(len1);
            int temp = ((int)temp1-48)+count;
            //用完之后设为0
            count=0;
            if(temp>=10){
                count=1;
                temp%=10;
            }
            sb.append((char)(temp+48));
            len1--;
        }

        while (len2>=0){
            char temp2 = num2.charAt(len2);
            int temp = ((int)temp2-48)+count;
            //用完之后设为0
            count=0;
            if(temp>=10){
                count=1;
                temp%=10;
            }
            sb.append((char)(temp+48));
            len2--;
        }

        //有可能最后还有一个进位呢?
        if(count==1)
            sb.append(‘1‘);

        String result = sb.reverse().toString();

        return result;

    }

}

 

以上是关于LeetCode415-字符串相机(水题)的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第26题 LeetCode 415. 字符串相加c++ / java 详细题解

LeetCode:字符串相加415

Leetcode 415 字符串相加

leetcode415---字符串大数相加

java [415。添加字符串] #Leetcode #Medium #BigInt(String)

LeetCode: 415. 字符串相加