代码
public String addStrings ( String num1, String num2) { if ( num1 == null ) { return num2; } if ( num2 == null ) { return num1; } int min = Math . min ( num1. length ( ) , num2. length ( ) ) ; int abs = Math . abs ( num1. length ( ) - num2. length ( ) ) ; if ( num1. length ( ) == min) { num1 = fillZero ( abs) + num1; } if ( num2. length ( ) == min) { num2 = fillZero ( abs) + num2; } boolean carry = false ; boolean lastCarry = false ; StringBuilder result = new StringBuilder ( ) ; for ( int i = num1. length ( ) - 1 ; i >= 0 ; i-- ) { int plus = Integer . parseInt ( String . valueOf ( num1. charAt ( i) ) ) + Integer . parseInt ( String . valueOf ( num2. charAt ( i) ) ) ; if ( carry) { plus += 1 ; } if ( plus > 9 ) { carry = true ; } else { carry = false ; } result. append ( plus % 10 ) ; if ( i == 0 && carry ) { lastCarry = true ; } } String finalString = lastCarry ? "1" + result. reverse ( ) : result. reverse ( ) . toString ( ) ; System . out. println ( String . format ( "%s + %s = %s" , num1, num2, finalString) ) ; return finalString; } public String fillZero ( int abs) { StringBuilder zero = new StringBuilder ( ) ; for ( int i = 0 ; i < abs; i++ ) { zero. append ( "0" ) ; } return zero. toString ( ) ; }
总结
常规的思路就可以解决 先把计算做分解 高位补0或者截取高位都可以处理,但是细想一下补0更方便