思路:将他们转成int数组,然后按位相加,空间复杂度有点高,但时间复杂度为Max(O(M,N))
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String one = scanner.next(); String two = scanner.next(); addBigDight(one,two); } } private static void addBigDight(String one,String two){ int oneLen = one.length(); int twoLen = two.length(); int resultLen = (oneLen > twoLen ? oneLen : twoLen ) + 1; int[] result = new int[resultLen]; int oneIndex = oneLen - 1; int twoIndex = twoLen - 1; int index = 0; char[] oneChars = one.toCharArray(); char[] twoChars = two.toCharArray(); int[] oneArr = new int[oneLen]; int[] twoArr = new int[twoLen]; for (int i = 0; i < oneArr.length; i++) { oneArr[i] = oneChars[i] - '0'; } for (int i = 0; i < twoChars.length; i++) { twoArr[i] = twoChars[i] - '0'; } while (oneIndex >= 0 && twoIndex >= 0){ result[index] += oneArr[oneIndex] + twoArr[twoIndex]; if(result[index] > 9){ result[index] -= 10; result[index + 1] = 1; } index++; oneIndex--; twoIndex--; } while (oneIndex >= 0){ result[index] += oneArr[oneIndex]; index++; oneIndex--; } while (twoIndex >= 0){ result[index] += twoArr[twoIndex]; index++; twoIndex--; } for (int i = index-1; i >= 0 ; i--) { System.out.print(result[i]); } System.out.println(); } }