leetcode[Add Strings]//待整理多种解法

来源:互联网 发布:mac口红dangerous 编辑:程序博客网 时间:2024/05/17 23:00

解法一:

public class Solution {    public String addStrings(String num1, String num2) {        StringBuilder res = new StringBuilder();        int i = num1.length() - 1;        int j = num2.length() - 1;        int digit = 0;        int carry = 0;                while(i >= 0 && j >= 0){        char c1 = num1.charAt(i);        char c2 = num2.charAt(j);        digit = (c1-'0' + c2 - '0' + carry) % 10;        carry = (c1-'0' + c2 - '0' + carry) / 10;        //System.out.println(digit + "     "  + carry);        //res.append(digit + '0');不对,这里res.append是加一个字符串,比如digit=6,6+'0'=6+48=54        //我们需要将54转为char,否则加进去的就是"54"这个字符串        res.append((char)(digit + '0'));        //System.out.println(res);        i--;        j--;        }                while(i >= 0){//不能用while(i != 0),因为在上面那个循环中i可能小于0(上面那个循环判断条件是i>=0)        char c1 = num1.charAt(i);        digit = (c1-'0' + carry) % 10;        carry = (c1-'0' + carry) / 10;        res.append((char)(digit + '0'));        i--;        }                while(j >= 0){//不能用while(j != 0),因为在上面那个循环之后j可能小于0(上面那个循环判断条件是j>=0)        char c2 = num2.charAt(j);        digit = (c2-'0' + carry) % 10;        carry = (c2-'0' + carry) / 10;        res.append((char)(digit + '0'));        j--;        }                //最后的进位还要处理        if(carry > 0){        res.append((char)(carry + '0'));        }         return res.reverse().toString();    }}


阅读全文
0 0