[LeetCode] 415. Add Strings 解题报告
2017-02-13 08:08
330 查看
Given two non-negative integers
as string, return the sum of
Note:
The length of both
< 5100.
Both
only digits
Both
not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
这一题非常简单,记得前面有个和这个类似的题,大概是100号以前。
我的方法就是从右往左算,如果算完,直接把较长的字符串复制下来即可。另外,使用一个boolean变量控制进位就好。
我用的char型数组,主要考虑效率问题,直接String字符串是效率非常低的。
num1and
num2represented
as string, return the sum of
num1and
num2.
Note:
The length of both
num1and
num2is
< 5100.
Both
num1and
num2contains
only digits
0-9.
Both
num1and
num2does
not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.
这一题非常简单,记得前面有个和这个类似的题,大概是100号以前。
我的方法就是从右往左算,如果算完,直接把较长的字符串复制下来即可。另外,使用一个boolean变量控制进位就好。
我用的char型数组,主要考虑效率问题,直接String字符串是效率非常低的。
private static final char ZERO = '0'; public String addStrings(String num1, String num2) { if (num1.length() == 0 || num2.length() == 0) { return num1.length() == 0 ? num1 : num2; } char[] cArr1 = num1.length() >= num2.length() ? num1.toCharArray() : num2.toCharArray(); char[] cArr2 = num1.length() < num2.length() ? num1.toCharArray() : num2.toCharArray(); int nCount = 0; int nMinLength = cArr2.length; int nMaxLength = cArr1.length; char[] cArrResult = new char[nMaxLength + 1]; boolean bUpDigit = false; while (nCount < nMaxLength) { char c1 = cArr1[cArr1.length - nCount - 1]; char c2 = nCount < nMinLength ? cArr2[cArr2.length - nCount - 1] : ZERO; int nCurrentDigit = (int) (c1 - ZERO) + (int) (c2 - ZERO); nCurrentDigit = bUpDigit ? nCurrentDigit + 1 : nCurrentDigit; bUpDigit = false; if (nCurrentDigit > 9) { bUpDigit = true; nCurrentDigit -= 10; } cArrResult[cArrResult.length - nCount - 1] = (char) (nCurrentDigit + ZERO); nCount++; } String strResult = String.valueOf(cArrResult).substring(1); return bUpDigit ? 1 + strResult : strResult; }
相关文章推荐
- 剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
- Subset II [Leetcode 解题报告]
- 【LeetCode】Path Sum II 解题报告
- [LeetCode]Unique Paths II, 解题报告
- [Leetcode] 513. Find Bottom Left Tree Value 解题报告
- [Leetcode] 515. Find Largest Value in Each Tree Row 解题报告
- [Leetcode] 329. Longest Increasing Path in a Matrix 解题报告
- Leetcode 397. Integer Replacement 整数替换 解题报告
- [Leetcode] 138. Copy List with Random Pointer 解题报告
- [LeetCode] 279. Perfect Squares 解题报告
- [Leetcode] 686. Repeated String Match 解题报告
- LeetCode 解题报告--202Happy Number
- LeetCode String to Integer (atoi) 解题报告
- [LeetCode] Integer to Roman 解题报告
- [Leetcode] 693. Binary Number with Alternating Bits 解题报告
- LeetCode 371.Sum of Two Integers 解题报告
- [Leetcode] 215. Kth Largest Element in an Array 解题报告
- 【LeetCode】Integer to Roman 解题报告
- LeetCode解题报告—— Word Search & Subsets II & Decode Ways
- 【LeetCode】Array Partition I 解题报告