zoukankan      html  css  js  c++  java
  • 415. 字符串相加-字符串-简单

    问题描述

    给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

    注意:

    num1 和num2 的长度都小于 5100.
    num1 和num2 都只包含数字 0-9.
    num1 和num2 都不包含任何前导零。
    你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/add-strings

    解答

    class Solution {
        public void jinwei(StringBuilder s1, int offset, int num){
            if(offset < s1.length()){
                int temp = (int)s1.charAt(offset)-'0'+num;
                if(temp>=10){
                    s1.setCharAt(offset,(char)(temp%10+48));
                    jinwei(s1, offset+1, (int)(temp/10));
                }
                else s1.setCharAt(offset, (char)(temp+48));
            }else s1.append(num);
        }
        public String addStrings(String num1, String num2) {
            int len_num1 = num1.length();
            int len_num2 = num2.length();
            //保证num1比num2长
            if(len_num1 < len_num2){
                String result = addStrings(num2, num1);
                return result;
            }
            StringBuilder s1 = new StringBuilder(num1);
            StringBuilder s2 = new StringBuilder(num2);
            s1.reverse();
            s2.reverse();
            //结果保存到长的String里面,也就是num1
            for(int i=0;i<len_num2;i++){
                int temp = (int)s1.charAt(i)-'0'+(int)s2.charAt(i)-'0';
                if(temp>=10){
                    s1.setCharAt(i,(char)(temp%10+48));
                    jinwei(s1, i+1, (int)(temp/10));
                }
                else s1.setCharAt(i,(char)(temp+48));
            }
            return s1.reverse().toString();
        }
    }
  • 相关阅读:
    「BZOJ1954」Pku3764 The xor – longest Path
    【bzoj4260】【Codechef REBXOR】
    BZOJ_3012_[Usaco2012 Dec]First!
    【bzoj1174】[Balkan2007]Toponyms
    String
    前缀和
    [POI2008] CLO
    [Scoi2010] 游戏
    CodeForces892E
    并查集的删除操作
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13340387.html
Copyright © 2011-2022 走看看