两个字符串求和
手动实现对两个字符串的和求解
package algorithm;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class StringSum {
private static final Logger log = LogManager.getLogger(StringSum.class);
public static void main(String[] args) throws Exception{
long start = System.currentTimeMillis();
String result = doSum("121212100000000000000000000000000000021212", "12");
long end = System.currentTimeMillis();
log.info("消费时间 => {},运行结果 => {}", (end - start), result);
}
private static String doSum(String a, String b) throws NumberFormatException {
int aL = a.length();
int bL = b.length();
int max = Math.max(aL, bL);
StringBuilder result = new StringBuilder(max + 1);
int highWight = 0;
char[] aArr = a.toCharArray();
char[] bArr = b.toCharArray();
while (aL != 0 && bL != 0) {
int aVal = Integer.parseInt(aArr[aL - 1] + "");
int bVal = Integer.parseInt(bArr[bL - 1] + "");
int sum = aVal + bVal;
if (sum >= 10) {
result.insert(0, sum % 10 + highWight);
highWight = 1;
} else {
result.insert(0, sum + highWight);
highWight = 0;
}
aL--;
bL--;
}
if (aL != 0) {
result.insert(0, a.substring(0, aL));
} else if (bL != 0) {
result.insert(0, b.substring(0, bL));
}
return result.toString();
}
}