这个算法太。。蛋疼了,新博文地址:[leetcode]Add Binary
http://oj.leetcode.com/problems/add-binary/
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
For example,
a = "11"
b = "1"
Return "100".
刚开始做这道题的时候,考虑的比较简单,首先将二进制字符串转换成int类型,然后将和再转换成字符串形式,然后就悲剧了,int类型溢出,手生了,忘了一个忌讳“整形操作可以转换为字符串操作,但是字符串操作往往不能转换为整形操作”,其实这道题是一道很简单的二进制加法的模拟,由于a,b的位数不一致,我们需要将低位对齐进行操作,这就需要将位数小的数高位补0,这是一件很蛋疼的事情,因为我们不放设法将a,b两个字符串进行转置。把低位放在字符串的前面,这样操作起来就方便多了。
代码如下:
public String addBinary(String a, String b) { StringBuilder aReverse = new StringBuilder(a).reverse(); StringBuilder bReverse = new StringBuilder(b).reverse(); //进行高位补0操作 if (a.length() > b.length()) { for (int i = 0; i < a.length() - b.length(); i++) { bReverse.append("0"); } } else { for (int i = 0; i < b.length() - a.length(); i++) { aReverse.append("0"); } } int tem = 0; StringBuilder c = new StringBuilder(); for (int i = 0; i < aReverse.length(); i++) { int sum = (aReverse.charAt(i) - '0') + (bReverse.charAt(i) - '0') + tem; if (sum < 2) { c.append(sum + ""); tem = 0; } else {//else的情况有两种,sum = 2或3,这里一并处理了 tem = 1; c.append(sum % 2 + ""); } } if (tem == 1) {//最高位产生进位 c.append("1"); } return c.reverse().toString(); }
相关推荐
javascript js_leetcode题解之67-add-binary.js
标题中的“67.addBinary.playground.zip”表明这是一个与LeetCode第67题相关的Swift编程练习项目。LeetCode是一个在线平台,提供各种算法题目供程序员练习和提升编程技能。第67题通常指的是将两个二进制数相加的问题...
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 ...
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**:将两个二进制数相加。 - **Basic Calculator II**:实现一个基本计算器,读取一个表达式并返回计算结果。 本书通过实际编程案例,讲解了各种算法思想和技巧,涵盖了从基础的数据结构(如数组、...
根据提供的文件信息,我们能提炼出一系列IT相关知识点,主要是围绕LeetCode这本电子书的主题——即编程面试题目解答。此电子书内容丰富,涵盖了算法和数据结构中常见的问题及其解决方案,非常适合准备技术面试的读者...
- Add Two Numbers(两数相加):以链表的形式表示两个非负整数,并将其相加。 - Longest Substring Without Repeating Characters(无重复字符的最长子串):找出无重复字符的最长子串的长度。 - Median of Two ...
* Add Binary:给定两个二进制字符串,返回其和。这个题目需要使用数学的思想,将二进制字符串转换为整数,并返回其和。 * Basic Calculator II:给定一个字符串,返回其计算结果。这个题目需要使用数学的思想,将...
- Add Binary: 给定两个二进制字符串,返回它们的和。 - Text Justification: 给定一个单词数组和一个长度 maxWidth,设计一个方法使得每行中单词之间的空间均匀分配,并且左右两端对齐。 - Sqrt(x): 计算并返回x的...
**1.1 Add Two Numbers (2)** - **问题描述**:给定两个非空链表来表示两个非负整数。数字最高位位于链表的首位。将这两个数字相加并返回一个新的链表。 - **解题思路**: - 使用一个临时变量记录进位值。 - 遍历...
leetcode双人赛LeetCode ...AddBinary :简单的问题。 AddTwoNumbers :简单的问题。 Anagrams :简单的#hashtable问题。 BalancedBinaryTree :简单的#balance #tree问题。 BestTimetoBuyandSellStock :简单的问题。 ...
leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 选择排序 快速排序 堆排序 搜索 二分查找 深度优先搜索 广度优先搜索 递归 json 漂亮的打印 过滤中文文件 ...
两数相加(Add Two Numbers) 2018.9.25 翻转二叉树(Invert Binary Tree) 2018.9.25 环形链表(Linked List Cycle) 2018.9.25 环形链表 II(Linked List Cycle II) 2018.9.26 删除排序链表中的重复元素 II...
leetcode ...Binary Linked-list 002 Add Two Numbers Stack 020 Valid Parenthesis Hash Table 001 TwoSum Reference 完整的学习流程 How to be a softwair engineer: 其他人详解 Python的各式演算法
LeetCode的第67题,也被称为“Add Binary”,要求我们将两个非负整数表示为二进制字符串,然后将它们相加,返回结果的二进制形式。这个问题的核心在于理解二进制运算的规则,包括二进位的加法(0+0=0, 0+1=1, 1+0=1,...
Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...
Algorithm templates and LeetCode SolutionsTBD Add multi binary search algorithm for leetcode0034 Add Segment Tree for data structure Add union-find algorithm(Disjoint Set Union) for data structure Add...
addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression Matching 递归匹配 ...
add-two-numbers find-peak-element longest-common-subsequence longest-consecutive-sequence max-area-of-island next-greater-element-ii serialize-and-deserialize-binary-tree subarray-sum-equals-k binary-...