字符串相加 java_字符串相加-LeetCode(Java实现)
題目描述:
給定兩個字符串形式的非負整數(shù)?num1?和num2?,計算它們的和。
注意:
num1?和num2?的長度都小于 5100.
num1?和num2?都只包含數(shù)字?0-9.
num1?和num2?都不包含任何前導零。
你不能使用任何內(nèi)建 BigInteger 庫,?也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式。
解題思路:
先把兩個字符串反轉(zhuǎn),然后變成相同長度(在短的字符串后面加 ”0“)。
從左到右給兩個統(tǒng)一字符串上的字符求和(先變成整數(shù),再求和)。創(chuàng)建一個int變量,存放求和后需要進位的數(shù)。
求和后的數(shù)字,減去10,然后存放在一個新字符串中。
反轉(zhuǎn)新字符串,并返回該字符串。
代碼實現(xiàn):
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();
}
}
總結(jié)
以上是生活随笔為你收集整理的字符串相加 java_字符串相加-LeetCode(Java实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件输出 java_用Java读写文件(
- 下一篇: 成员的访问控制java_java类成员的