leetcode-字符串相加

文章目录

    • 题目
    • 代码

题目

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

注意:

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

代码

/*
 * @lc app=leetcode.cn id=415 lang=java
 *
 * [415] 字符串相加
 */

// @lc code=start
class Solution {
    public String addStrings(String num1, String num2) {

        if (num1 == null || num1.equals("0")) {
            return num2;
        }else if (num2 == null || num2.equals("0")) {
            return num1;
        }
        StringBuffer s1 = new StringBuffer(num1);
        StringBuffer s2 = new StringBuffer(num2);
        s1.reverse();
        s2.reverse();
        if (s1.length() > s2.length()) {
            for (int i = s2.length(); i < s1.length(); i++) {
                s2.append("0");
            }
        }else if (s1.length() < s2.length()) {
            for (int i = s1.length(); i < s2.length(); i++) {
                s1.append("0");
            }
        }
        int flag = 0;
        StringBuffer str = new StringBuffer("");
        for (int i = 0; i < s1.length(); i++) {
            int value1 = s1.charAt(i) - '0';
            int value2 = s2.charAt(i) - '0';
            int value = flag + value1 + value2;
            if (value >= 10) {
                flag = 1;
                value = value - 10;
                str.append(value);
            }else {
                str.append(value);
                flag = 0;
            }
        }
        if (flag != 0) {
            str.append(flag);
        }
        str.reverse();
        return str.toString();

    }
}
// @lc code=end


你可能感兴趣的:(leetcode刷题)