[分析]
从低位往高位逐位相加,就是这么一个简单的题却花了我一个多小时,无力骂自己了……
一开始想到用StringBuilder保存结果,但为了得到结果我需要每次将新算的一位insert到最前面,这样效率比较低,于是转而使用数组保存结果,数组预先开成两个字符串最大长度加1,这种coding起来其实很麻烦,要维护三个下标,很容易出错。
其实是对StringBuilder接口不熟,没有意识到它有reverse方法;
发现自己潜意识里有一口吃成胖子或者一步登天的想法,使用StringBuilder得到逆序结果就不行吗,自己再想办法逆成正确的呗;
小处的节省常常会让自己得不偿失,计算一位的结果时一开始想避免使用%,于是代码时这样的
sum.append(bitsum-2),正确的是sum.append(bitsum >= 2 ? (bitsum - 2) : bitsum)。
使用% 就不会犯这种貌似的失误,而且可读性强不是一点点,提交后发现运行时间更少(吃惊)
再说一次,
先写对再优化!
public class Solution {
public String addBinary(String a, String b) {
if (a == null || b == null)
return a != null ? a : b;
StringBuilder sum = new StringBuilder();
int carry = 0;
int i = a.length() - 1, j = b.length() - 1;
while (i >= 0 && j >= 0) {
int bitsum = a.charAt(i--) - '0' + b.charAt(j--) - '0' + carry;
sum.append(bitsum % 2);
carry = bitsum / 2;
}
while (i >= 0) {
int bitsum = a.charAt(i--) - '0' + carry;
sum.append(bitsum % 2);
carry = bitsum / 2;
}
while (j >= 0) {
int bitsum = b.charAt(j--) - '0' + carry;
sum.append(bitsum % 2);
carry = bitsum / 2;
}
if (carry == 1)
sum.append(1);
return sum.reverse().toString();
}
}
分享到:
相关推荐
javascript js_leetcode题解之67-add-binary.js
- Add Binary: 给定两个二进制字符串,返回它们的和。 - Text Justification: 给定一个单词数组和一个长度 maxWidth,设计一个方法使得每行中单词之间的空间均匀分配,并且左右两端对齐。 - Sqrt(x): 计算并返回x的...
leetcode题库 LeetCode-Rust 听说 LeetCode 添加了 Rust 支持, 这岂不是双倍的快(fu)乐(za)? 于是来体验一下 ...add_binary -- --nocapture Benchmark cargo bench --lib length_of_last_word -- --nocapture
leetcode双人赛LeetCode ...AddBinary :简单的问题。 AddTwoNumbers :简单的问题。 Anagrams :简单的#hashtable问题。 BalancedBinaryTree :简单的#balance #tree问题。 BestTimetoBuyandSellStock :简单的问题。 ...
leetcode 答案 LeetCode-Trip LeetCode刷题代码,大佬勿入。 为一年后的研究生找工作...Binary Tree] [121. Best Time to Buy and Sell Stock] [167. Two Sum II - Input array is sorted] Medium [2. Add Two Numbers]
67.二进制求和 (Add Binary) 69.x 的平方根 (Sqrt(x)) 70.爬楼梯 (Climbing Stairs) 83.删除排序链表中的重复元素 (Remove Duplicates from Sorted List) 88.合并两个有序数组 (Merge Sorted Array) 100.相同的树 ...
Leetcode算法练习 Leetcode算法练习 ...MaximumSubarray 58_LengthOfLastWord 66_PlusOne 67_AddBinary 69_Sqrt(x) 70_ClimbStairs 83_RemoveDuplicatesFromSortedList 88_MergeSortedArray 100_SameT
Leetcode的ac是什么意思 LeetCodeInJava List #98 Validate Binary Search Tree #100 Same Tree #104 Maximum Depth of Binary Tree #122 Best Time to Buy and Sell Stock II #136 Single Number #150 Evaluate ...
LeetCode笔记本docsifyjsLeetCode算法Java c / c ++ javascript的基本知识简单的1. Two Sum 704. Classical Binary Search2. 3 Sum206. Reverse Linked List中等的33. Search in Rotated Sorted Array74. Search a ...
Add Two Numbers], Linked list 2017.06.13 打卡[LeetCode 200. Number of Islands], BFS 2017.06.14 打卡[LeetCode 3. Longest Substring Without Repeating Characters], N/A 2017.06.15 打卡[LeetCode 407. ...
“add_binary.py” - 以字符串的形式将两个二进制数作为输入,并将它们的总和作为字符串的输出返回。 “add_digits.py” - 递归添加数字的所有数字的算法。 “contains_duplicate.py” - 检查整数列表是否包含任何...
401 | [Binary Watch](https://leetcode.com/problems/binary-watch/) | [C++](./C++/binary-watch.cpp) [Python](./Python/binary-watch.py) | _O(1)_ | _O(1)_ | Easy | | 411 | [Minimum Unique Word ...
construct-binary-tree-from-preorder-and-inorder-traversal 无官方题解 106 construct-binary-tree-from-inorder-and-postorder-traversal 无官方题解 116 populating-next-right-pointers-in-eac
serialize-and-deserialize-binary-tree subarray-sum-equals-k binary-tree-preorder-traversal n-queens-ii populating-next-right-pointers-in-each-node sum-root-to-leaf-numbers best-time-to-buy
addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression Matching 递归匹配 ...
Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...
- **Add Binary**:将两个二进制数相加。 - **Basic Calculator II**:实现一个基本计算器,读取一个表达式并返回计算结果。 本书通过实际编程案例,讲解了各种算法思想和技巧,涵盖了从基础的数据结构(如数组、...
王一飞的LeetCode题解 算法: | 问题 | 解决方案 | -----|---------------- | --------------- | 第344话| [ReverseString.cc] (./solutions/ReverseString.cc) | 第292话| [NimGame.cc] (./solutions/NimGame.cc) |...
leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 选择排序 快速排序 堆排序 搜索 二分查找 深度优先搜索 广度优先搜索 递归 json 漂亮的打印 过滤中文文件 ...