Leetcode——415. Add Strings【java】

大概是那个面试题吧,就是也许两个数相加,陷阱就是可能那个数就贼大,也许远远超过int或者long

Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:

  1. The length of both num1 and num2 is < 5100.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly
自己的想法有几个疏漏:
if (num1.length() >= num2.length()) { bigStr = num1; smallStr = num2; } else { bigStr = num2; smallStr = num1; }
这样比较好些。。



大神简洁实用做法:

public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length() - 1, carry = 0; String res = ""; while (i >= 0 || j >= 0) { if (i >= 0) carry += num1.charAt(i--) - '0'; if (j >= 0) carry += num2.charAt(j--) - '0';//既然是相加,那么用结果一个再加另一个也是完全可以的吧 res = Integer.toString(carry % 10) + res; carry /= 10; } return carry != 0 ? "1" + res : res;//直接用字符串的相加特性,非常巧妙 }

 //0316复习 

posted @ 2017-03-15 10:11  Nicolellu  阅读(375)  评论(0编辑  收藏  举报