zoukankan      html  css  js  c++  java
  • 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;
    
        }
    
    }
  • 相关阅读:
    2012年浙大:Hello World for U
    noip2011普及组:统计单词
    noip2013提高组:积木大赛
    蓝桥杯:错误票据
    C#知识点
    疑问
    C#多态
    SQLServer导入Excel,复杂操作
    SQLServer数据库基本操作,导入Excel数据
    C#基础学习
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9715371.html
Copyright © 2011-2022 走看看