问题描述:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
原问题链接:https://leetcode.com/problems/add-binary/
问题分析
也是一个比较简单的问题,因为是要模拟两个字符串的二进制加法。所以需要每次从两个串的最后面开始往前加。关键是每次加的结果要保存到一个StringBuilder里面。同时要判断两个串长度不一样的情况。我们可以在一个循环里将它们的关系给概括出来。具体来说如下:
当a, b都有元素的时候,它们相加的结果是 temp = charToInt(a.charAt(i)) + charToInt(b.charAt(j)) + carry. 当a或者b中间有一个已经先遍历完的时候,结果是 temp = charToInt(a.charAt(i)) + carry 或者 temp = charToInt(b.charAt(j)) + carry。其中carry表示进位。
详细代码实现如下:
public class Solution { public String addBinary(String a, String b) { if(a.length() == 0 || a.equals("0")) return b; if(b.length() == 0 || b.equals("0")) return a; StringBuilder builder = new StringBuilder(); int temp = 0, carry = 0; for(int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; i--, j--) { if(i >= 0 && j >= 0) { temp = charToInt(a.charAt(i)) + charToInt(b.charAt(j)) + carry; } else if(i >= 0) { temp = charToInt(a.charAt(i)) + carry; } else { temp = charToInt(b.charAt(j)) + carry; } builder.append(temp % 2); carry = temp / 2; } if(carry > 0) builder.append(carry); return builder.reverse().toString(); } private int charToInt(char c) { return c - '0'; } }
相关推荐
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. ...
leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 选择排序 快速排序 堆排序 搜索 二分查找 深度优先搜索 广度优先搜索 递归 json 漂亮的打印 过滤中文文件 ...
每个子文件或子目录可能会有一个特定的题目编号,例如 "001_two_sum.py" 或 "002_add_two_numbers.py",这些编号遵循了 LeetCode 题目的顺序。 在 LeetCode 上,题目通常分为几个主要类别: 1. **数组**:涉及数组...
两数相加(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...
addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression Matching 递归匹配 ...
leetcode ...Binary Linked-list 002 Add Two Numbers Stack 020 Valid Parenthesis Hash Table 001 TwoSum Reference 完整的学习流程 How to be a softwair engineer: 其他人详解 Python的各式演算法
3. **二叉树(Binary Trees)**:这类问题涉及到树的遍历、查找、构造等。在Java中,可以使用自定义类表示二叉树节点,并实现前序、中序、后序遍历。比如"二叉树的最大路径和",可以使用动态规划和递归相结合的方法...
Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...
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-...
例如,"两数相加"(Add Two Numbers)问题,需要将两个链表表示的数字相加。 3. **字符串(String)**:字符串处理涉及模式匹配、反转、子串查找等。例如,"无重复字符的最长子串"(Longest Substring Without ...
Add Two Numbers 两数相加 math 3 Longest Substring Without Repeating Characters 无重复字符的最长子串 string 4 LMedian of Two Sorted Arrays 两个排序数组的中位数 ary,binary search,dive and conquer 5 ...
2_add_two_numbers.c : 两个数相加 3_solution.c : 无重复字符的最长子串 space_urlencode.c : 在 O(n) space_urlencode.c空间更改为“ ” ./two_dimension_binary_search.c : 二维排序数组中的二分查找 ./6_zigzag....
java lru leetcode LeetCode ...Add Two Numbers Matrix Spiral Matrix Mergesort [Algorithm Swap](Mergesort/Algorithm swap.md) Numbers Queue Stack Toposort Trie Tree Two Pointers Union Find
javascript js_leetcode题解之67-add-binary.js
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 ...
leetcode双人赛LeetCode ...AddBinary :简单的问题。 AddTwoNumbers :简单的问题。 Anagrams :简单的#hashtable问题。 BalancedBinaryTree :简单的#balance #tree问题。 BestTimetoBuyandSellStock :简单的问题。 ...
标题中的“67.addBinary.playground.zip”表明这是一个与LeetCode第67题相关的Swift编程练习项目。LeetCode是一个在线平台,提供各种算法题目供程序员练习和提升编程技能。第67题通常指的是将两个二进制数相加的问题...
- **Add Binary**:将两个二进制数相加。 - **Basic Calculator II**:实现一个基本计算器,读取一个表达式并返回计算结果。 本书通过实际编程案例,讲解了各种算法思想和技巧,涵盖了从基础的数据结构(如数组、...
根据提供的文件信息,我们能提炼出一系列IT相关知识点,主要是围绕LeetCode这本电子书的主题——即编程面试题目解答。此电子书内容丰富,涵盖了算法和数据结构中常见的问题及其解决方案,非常适合准备技术面试的读者...
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...