`
carlosten
  • 浏览: 3434 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Leetcode: Add Binary

阅读更多

题目描述:

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;
    }
};

 

分享到:
评论

相关推荐

    leetcode卡-LeetCode:我的LeetCode解决方案

    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中文版-leetcode:leetcode

    leetcode中文版车鸟 一组用python编写的算法。 种类 冒泡排序 插入排序 归并排序 桶排序 计数排序 基数排序 选择排序 快速排序 堆排序 搜索 二分查找 深度优先搜索 广度优先搜索 递归 json 漂亮的打印 过滤中文文件 ...

    leetcode:Leetcode学习代码

    每个子文件或子目录可能会有一个特定的题目编号,例如 "001_two_sum.py" 或 "002_add_two_numbers.py",这些编号遵循了 LeetCode 题目的顺序。 在 LeetCode 上,题目通常分为几个主要类别: 1. **数组**:涉及数组...

    lrucacheleetcode-LeetCode:LeetCode刷题

    两数相加(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中国-leetcode:leetcode刷题

    addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression Matching 递归匹配 ...

    leetcodepython001-LeetCode:力码

    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:一些Leetcode解决方案

    3. **二叉树(Binary Trees)**:这类问题涉及到树的遍历、查找、构造等。在Java中,可以使用自定义类表示二叉树节点,并实现前序、中序、后序遍历。比如"二叉树的最大路径和",可以使用动态规划和递归相结合的方法...

    leetcode答案-ruby_leetcode:ruby_leetcode

    Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...

    lrucacheleetcode-leetcode:个人刷leetcode遇到的一些题汇总(golang)

    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-...

    LeetCode:LeetCode刷题

    例如,"两数相加"(Add Two Numbers)问题,需要将两个链表表示的数字相加。 3. **字符串(String)**:字符串处理涉及模式匹配、反转、子串查找等。例如,"无重复字符的最长子串"(Longest Substring Without ...

    leetcode中文版-LeetCode:LeetcodeC++/Java

    Add Two Numbers 两数相加 math 3 Longest Substring Without Repeating Characters 无重复字符的最长子串 string 4 LMedian of Two Sorted Arrays 两个排序数组的中位数 ary,binary search,dive and conquer 5 ...

    leetcode二维数组搜索-leetcode:C中一些算法问题的解决

    2_add_two_numbers.c : 两个数相加 3_solution.c : 无重复字符的最长子串 space_urlencode.c : 在 O(n) space_urlencode.c空间更改为“ ” ./two_dimension_binary_search.c : 二维排序数组中的二分查找 ./6_zigzag....

    javalruleetcode-leetcode:更多信息请访问Gitbook:https://wentao-shao.gitbook.io/

    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

    js-leetcode题解之67-add-binary.js

    javascript js_leetcode题解之67-add-binary.js

    LeetCode最全代码

    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-1:leetcode-1

    leetcode双人赛LeetCode ...AddBinary :简单的问题。 AddTwoNumbers :简单的问题。 Anagrams :简单的#hashtable问题。 BalancedBinaryTree :简单的#balance #tree问题。 BestTimetoBuyandSellStock :简单的问题。 ...

    67.addBinary.playground.zip

    标题中的“67.addBinary.playground.zip”表明这是一个与LeetCode第67题相关的Swift编程练习项目。LeetCode是一个在线平台,提供各种算法题目供程序员练习和提升编程技能。第67题通常指的是将两个二进制数相加的问题...

    Leetcode题目+解析+思路+答案.pdf

    - **Add Binary**:将两个二进制数相加。 - **Basic Calculator II**:实现一个基本计算器,读取一个表达式并返回计算结果。 本书通过实际编程案例,讲解了各种算法思想和技巧,涵盖了从基础的数据结构(如数组、...

    Leetcode book刷题必备

    根据提供的文件信息,我们能提炼出一系列IT相关知识点,主要是围绕LeetCode这本电子书的主题——即编程面试题目解答。此电子书内容丰富,涵盖了算法和数据结构中常见的问题及其解决方案,非常适合准备技术面试的读者...

    python-algorithm-templates:Python算法模板和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...

Global site tag (gtag.js) - Google Analytics