1. 程式人生 > 實用技巧 >415. 字串相加-字串-簡單

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(); } }