zoukankan      html  css  js  c++  java
  • leetcode解题:Add binary问题

    顺便把之前做过的一个简单难度的题也贴上来吧

    67. Add Binary

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    这种问题 其实大多数人都做烂了 但是在实际应用中这个问题应用很广泛 有用二进制数基本就要处理加减乘除

    一种最容易理解的方法但是不高效 那就是转为十进制处理后再转为二进制 当然这就不是我们玩leetcode的目的了

    这里给出一种做这种问题的普遍解法 先低位相加 定义一个carry表示进位 再处理多出来的部分

    话不多说 直接敲代码

    还是基本功有问题 没有找到valueof  o应该大写

    改正 编译通过了 看能不能ACCEPT

    wrong answer  普天同庆

    看看代码逻辑哪里出问题了 看答案好像是最后的carry没有加上去  日常看不出来为啥没起作用 。。。。

    打开eclipse 调试看看。。

    运行结果果然是0 设断点

    我服了我自己。。。  sum是Int 忘记处理字符和强制转换了 果然要细心再细心。。。

    阔以  再leetcode试试

     粗心被雷劈 有一段忘记加carry了

    成功解决- -  

    表现很中庸  6ms  只是解决了问题而已 很显然这不是我的目的 

    日常看别人的优秀解决方案  2ms

    public String addBinary(String a, String b) {
    	char[] aArray = a.toCharArray();
    	char[] bArray = b.toCharArray();
        char[] sumArray = new char[Math.max(a.length(), b.length()) + 1];
        int index = sumArray.length - 1, carry = 0;
        for(int aIndex = a.length()-1, bIndex = b.length()-1; aIndex >=0 || bIndex >= 0; aIndex--, bIndex--){
            int aNum = aIndex < 0 ? 0 : aArray[aIndex] - '0';
            int bNum = bIndex < 0 ? 0 : bArray[bIndex] - '0';
            int sum = aNum + bNum + carry;
            sumArray[index--] = (char)('0' + (sum % 2));
            carry = sum / 2;
        }
        sumArray[0] = (char)('0' + carry);
        return carry == 0 ? new String(sumArray, 1, sumArray.length - 1): new String(sumArray);
    }
    

      牺牲了一定的空间复杂度 如果实际应用中 数非常大不建议这样做

  • 相关阅读:
    objectiveC中的序列化(serialize)与反序列化(deserialize)
    objectiveC 的代码文件组织
    [转载]Multicast Explained in Flash 10.1 P2P
    几种异步操作方式
    objectiveC 的内存管理之自动释放池(autorelease pool)
    用VS2010调试微软开放的部分源码
    浏览器窗口尺寸改变时的图片自动重新定位
    数据结构C#版笔记啥夫曼树(Huffman Tree)与啥夫曼编码(Huffman Encoding)
    objectiveC 的内存管理之实例分析
    objectiveC 的OOP(上)类定义、继承及方法调用
  • 原文地址:https://www.cnblogs.com/Mrjie/p/6008532.html
Copyright © 2011-2022 走看看