二进制加法

输入2个字符串,字符串内由0和1组成;计算二者之和,返回字符串

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

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

 package com.rust.TestString;

 public class AddBinary {
     public static String addBinary(String a, String b) {
         int alen = a.length() - 1;
         int blen = b.length() - 1;
         int carry = 0;
         String res = "";
         while (alen >=0 || blen >= 0 || carry == 1){
             int delta = (alen < 0)? 0 : a.charAt(alen--) - '0';/* 得到int */
             int beta = (blen < 0)? 0 : b.charAt(blen--) - '0';
             res = (char)('0' + delta ^ beta ^ carry) + res;/* 异或处理得到当前位 */
             carry = (delta + beta + carry) >> 1;/* 移位处理得到进位 */
         }
         return res;
     }

     public static void main(String args[]){
         String text = "0101010";
         String atext =    "111";
         String btext =    "010";
         System.out.println(addBinary(atext, text));
         System.out.println(addBinary(atext, btext));
         System.out.println(addBinary(btext, text));
     }
 }

输出:

0110001
1001
0101100

AddBinary的更多相关文章

  1. leetcode — add-binary

    /** * Source : https://oj.leetcode.com/problems/add-binary/ * * * Given two binary strings, return t ...

  2. add-binary 字符串操作,二进制字符串相加

    Given two binary strings, return their sum (also a binary string). For example,a ="11"b =& ...

  3. [LeetCode] Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  4. Leetcode分类刷题答案&心得

    Array 448.找出数组中所有消失的数 要求:整型数组取值为 1 ≤ a[i] ≤ n,n是数组大小,一些元素重复出现,找出[1,n]中没出现的数,实现时时间复杂度为O(n),并不占额外空间 思路 ...

  5. leetcode算法分类

    利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode.com/problem ...

  6. 全部leetcode题目解答(不含带锁)

    (记忆线:当时一刷完是1-205. 二刷88道.下次更新记得标记不能bug-free的原因.)   88-------------Perfect Squares(完美平方数.给一个整数,求出用平方数来 ...

  7. 【leetcode】Add Binary

    题目简述: Given two binary strings, return their sum (also a binary string). For example, a = "11&q ...

  8. leetcode刷题全纪录(持续更新)

    2.Add Two Numbers 原题链接https://leetcode.com/problems/add-two-numbers/ AC解: public ListNode addTwoNumb ...

  9. LeetCode---String

    Count and Say 思路:递归求出n - 1时的字符串,然后双指针算出每个字符的次数,拼接在结果后面 public String countAndSay(int n) { if(n == 1) ...

随机推荐

  1. Xamarin App文件(apk)大小和启动时间的影响因素

    Xamarin开发的时候大家都有一个疑问,就是apk文件会不会特别的大,启动会不会很慢.答案是肯定的,文件肯定大,启动肯定会慢,但是具体大多少.具体慢多少,有什么因素可以使apk文件稍微小一点.可以使 ...

  2. JS中函数参数值传递和引用传递

    也许大家对于函数的参数都不会太在意,简单来说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样.深入研究,你会发现其实没那么简单,这个传参是要分俩种情况(其实这是个错误的说法 ...

  3. linux系统中的删除操作

    #rm [-fir] 文件或者目录 参数: -f:就是force的意思,忽略不存在的文件,不会出现警告信息: -i:互动模式,在删除前会询问用户是否操作: -r:递归删除.最常用的在目录删除.这是一个 ...

  4. Realm的简单使用

    Realm个人理解: 它主要是一套移动端数据库框架,将对数据库表的操作转换为对对象的操作,如果是学过Java ORM框架的同学使用Realm起来应该上手比较快一点.而且据我所知Realm不仅支持Obj ...

  5. tr的用法

    一.tr的基本功能 功能:转换.挤压或删除字符串,从标准输入接收输入,输出到标准输出基本用法:tr [options] string1 [string2] 二.例子 1.转换 $ echo " ...

  6. 在vue 中使用Stylus

    概述 什么是Stylus Stylus是一个CSS预处理器. 什么是CSS预处理器 关于CSS预处理器,推荐先行阅读这篇文章:为您详细比较三个 CSS 预处理器(框架):Sass.LESS 和 Sty ...

  7. twisted学习之reactor

    reactor是twisted框架里面一个很重要的抽象,它为我们实现了循环,所以我们不用再去实现循环了. reactor有如下特点: 1.reactor循环会一致运行下去,可以使用Ctrl+C或者相关 ...

  8. ecshop屏蔽wap功能

    用手机打开ecshop网店,就会被重定向到mobile文件夹,如果打开wap功能,就能看到wap版的网站.但现在智能手机横行,iphone.安卓可以跟电脑一样浏览和购物,这个wap功能就有点鸡肋.现在 ...

  9. 【JavaScript学习】-JS内置对象2-Data对象

    Date对象: Data对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义: //默认初始值定义: var dataName=new Date(); /*使用关键字new;Da ...

  10. thinkphp中try catch的运用

    public function doedit_set(){ $info=$this->_post("info"); $id=$this->_post("id& ...