方法一:
思路:
将String转换为char数组。从后往前逐位对呀相加,每位相加结果若大于9需对10取余,并用flag标记进位。
注意所有位相加完毕后,需要判断flag即最高位是否有进位,若有还需在结果字符串前面加上“1”。
public class Solution {
public String addStrings(String num1, String num2) {
char[] ch1 = num1.toCharArray();
char[] ch2 = num2.toCharArray();
int flag = 0;
int len1 = ch1.length;
int len2 = ch2.length;
int max = Math.max(len1, len2);
String result = "";
for (int i = 1; i <= max; i++) {
int temp = flag;
if (i <= len1)
temp += ch1[len1 - i] - '0';
if (i <= len2)
temp += ch2[len2 - i] - '0';
if (temp > 9) {
result = temp % 10 + result;
flag = 1;
}
else{
result = temp + result;
flag = 0;
}
}
if (flag == 1)
result = "1" + result;
return result;
}
}
Runtime:65ms
方法二:
思路:
不将String转换为char数组,直接逐位相加处理。
public class Solution {
public String addStrings(String num1, String num2) {
int flag = 0;
int len1 = num1.length();
int len2 = num2.length();
int max = Math.max(len1, len2);
String result = "";
for (int i = 1; i <= max; i++) {
int temp = flag;
if (i <= len1)
temp += num1.charAt(len1 - i) - '0';
if (i <= len2)
temp += num2.charAt(len2 - i) - '0';
if (temp > 9) {
result = temp % 10 + result;
flag = 1;
}
else{
result = temp + result;
flag = 0;
}
}
if (flag == 1)
result = "1" + result;
return result;
}
}
Runtime:55ms