1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| class Solution { public String addStrings(String num1, String num2) { Map<Character, Integer> map = new HashMap<>(10); char num = '0'; for (int i = 0; i < 10; i++) { map.put(num, i); num++; }
StringBuilder ans = new StringBuilder(); int p1 = num1.length() - 1, p2 = num2.length() - 1; int carry = 0;
while (p1 >= 0 || p2 >= 0) { int tmp; if (p1 >= 0 && p2 >= 0) { tmp = map.get(num1.charAt(p1)) + map.get(num2.charAt(p2)); } else if (p1 < 0) { tmp = map.get(num2.charAt(p2)); }else{ tmp = map.get(num1.charAt(p1)); } if (carry != 0) { tmp += 1; carry = 0; } if (tmp >= 10) { tmp -= 10; carry = 1; } ans.append(tmp); p1--; p2--; }
if (carry != 0) { ans.append(carry); }
return ans.reverse().toString(); } }
|