码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode#67Add Binary

时间:2015-04-30 01:09:02      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:example   return   public   字符串   二进制   

 Total Accepted: 40264 Total Submissions: 161822My Submissions

Question Solution 


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

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

分析,模拟二进制,一位一位的运算,从后往前,两个字符串一块进行,一定要注意“进位”的处理

public class Solution {

    public String addBinary(String a, String b) {

        

        int la=a.length();

        int lb=b.length();

        int jinwei=0;

        int ca=la-1;

        int cb=lb-1;

        String oc="";

        while(ca>=0&&cb>=0)

        {

            int x=a.charAt(ca)-‘0‘;

            int y=b.charAt(cb)-‘0‘;

            if(x==0)

            {

                x=x+jinwei;

                jinwei=0;    

            }

            else if(y==0)

            {

                y=y+jinwei;

                jinwei=0;

            }

            else

            {

                if(jinwei>0)

                {

                    x=0;

                    y=1;

                    jinwei=1;

                }

            }

            

            

            if(x==0&&y==0)

                oc=String.valueOf(0)+oc;

            else if(x==0||y==0)

                oc=String.valueOf(1)+oc;

            else

            {

                oc=String.valueOf(0)+oc;

                jinwei=1;

            }

            ca--;

            cb--;

        }

        

        if(ca==-1&&cb!=-1)

        {

         while(cb>=0)

            {

               if(jinwei==0)

               {

               oc=String.valueOf(b.charAt(cb))+oc;

               cb--;

               }

               else

               {

               if(b.charAt(cb)==‘1‘)

               {

               oc=String.valueOf(0)+oc;

               jinwei=1;

               }

               else

               {

               oc=String.valueOf(1)+oc;

               jinwei=0;

               }

               cb--;

               }

            }

        }

        else if(ca!=-1&&cb==-1)

        {

            while(ca>=0)

            {

               if(jinwei==0)

               {

               oc=String.valueOf(a.charAt(ca))+oc;

               ca--;

               }

               else

               {

               if(a.charAt(ca)==‘1‘)

               {

               oc=String.valueOf(0)+oc;

               jinwei=1;

               }

               else

               {

               oc=String.valueOf(1)+oc;

               jinwei=0;

               }

               ca--;

               }

            }

        }

        if(jinwei==1)

         oc=String.valueOf(1)+oc;

        return oc;

    }

}


Leetcode#67Add Binary

标签:example   return   public   字符串   二进制   

原文地址:http://7061299.blog.51cto.com/7051299/1640483

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!