题目描述:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
其实字符串可以直接用下标访问的,我还转成了char* 数组,从两个串的尾部开始相加,记录进位,把结果记录到一个字符数组中。如果最后计算完还有进位,要记得最高位多加一个1。然后将字符数组翻转就是结果了。
class Solution { public: string addBinary(string a, string b) { if(a.size() == 0) { return b; } if(b.size() == 0) { return a; } const char* tempa = a.c_str(); char* aa= new char[strlen(tempa) + 1]; const char* tempb = b.c_str(); char* bb= new char[strlen(tempb) + 1]; strcpy(aa,tempa); strcpy(bb,tempb); char* cc= new char[strlen(tempa) + strlen(tempb) + 1]; int lena = strlen(aa); int lenb = strlen(bb); int i; int j = 0; int jin = 0; if(lena > lenb) { for(i = lenb - 1;i >= 0; i --) { int sum = aa[lena - lenb + i] - '0' + bb[i] - '0' + jin; if (sum >= 2) { jin = 1; cc[j++] = sum - 2 + '0'; } else { jin = 0; cc[j++] = sum + '0'; } } for(i = lena- lenb - 1;i >= 0;i --) { int sum = aa[i] - '0' + jin; if (sum >= 2) { jin = 1; cc[j++] = sum - 2 + '0'; } else { jin = 0; cc[j++] = sum + '0'; } } } else { for(i = lena - 1;i >= 0; i --) { int sum = bb[lenb - lena + i] - '0' + aa[i] - '0' + jin; if (sum >= 2) { jin = 1; cc[j++] = sum - 2 + '0'; } else { jin = 0; cc[j++] = sum + '0'; } } for(i = lenb- lena - 1;i >= 0;i --) { int sum = bb[i] - '0' + jin; if (sum >= 2) { jin = 1; cc[j++] = sum - 2 + '0'; } else { jin = 0; cc[j++] = sum + '0'; } } } if(jin > 0) { cc[j++] = '1'; } int k = 0; char* result = new char[j+1]; for(i = j-1 ; i >= 0; i --) { result[k++] = cc[i]; } result[k] = '\0'; string r = string(result); return r; } };
相关推荐
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...