Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"z这是一道简单题。
就是通过字符串的二进制相加返回字符串的二进制相加的结果。
我是单纯用网页写的,虽然简单,但是犯错了,Java基础太久没用忘了。
1.String中取某一个具体位置的字符是用a.charAt(intdex),不是a[index]也不是a.charat(index);
2.字符串的长度是a.length(),而不是a.length;
3.我使用0开始的下标遍历字符串,而提取字符串要从右往左,所以下标的位置是a.charAt(a.length()-index-1)而不是a.charAt(a.length()-index)
4.算法是先算出两者的公共部分,然后算出某一个字符串的单独部分,就是较长那个字符串多出来的部分。
这样子并不是结束了,在最后还要判断一下进位是否有,如果有的话,还有给结果字符串前面加‘1’;
这才算结束。
上代码
public class Solution {
    public String addBinary(String a, String b) {
       // return Integer.toBinaryString(Integer.parseInt(a,2)+Integer.parseInt(b,2));
        String result="";
        int strlen=0;
        int isbig=0;
        int alength=a.length(),blength=b.length();
        for(;strlen<alength&&strlen<blength;++strlen){
            if(isbig==1){
                if(a.charAt(alength-strlen-1)=='1'&&b.charAt(blength-strlen-1)=='1')
                    {
                        result='1'+result;
                        isbig=1;
                    }
                if(a.charAt(alength-strlen-1)=='0'&&b.charAt(blength-strlen-1)=='0')
                    {
                        result='1'+result;
                        isbig=0;
                    }
                if(a.charAt(alength-strlen-1)=='1'&&b.charAt(blength-strlen-1)=='0'||a.charAt(alength-strlen-1)=='0'&&b.charAt(blength-strlen-1)=='1')
                    {
                        result='0'+result;
                        isbig=1;
                    }
            }
            else{
                 if(a.charAt(alength-strlen-1)=='1'&&b.charAt(blength-strlen-1)=='1')
                    {
                        result='0'+result;
                        isbig=1;
                    }
                if(a.charAt(alength-strlen-1)=='0'&&b.charAt(blength-strlen-1)=='0')
                    {
                        result='0'+result;
                        isbig=0;
                    }
                if(a.charAt(alength-strlen-1)=='1'&&b.charAt(blength-strlen-1)=='0'||a.charAt(alength-strlen-1)=='0'&&b.charAt(blength-strlen-1)=='1')
                    {
                        result='1'+result;
                        isbig=0;
                    }
            }
        }
        if(strlen==alength){
            for(;strlen<blength;++strlen){
                if(isbig==1){
                    if(b.charAt(blength-strlen-1)=='1'){
                        result='0'+result;
                        isbig=1;
                    }
                    else{
                         result='1'+result;
                        isbig=0;
                    }
                }else{
                   if(b.charAt(blength-strlen-1)=='1'){
                        result='1'+result;
                        isbig=0;
                    }
                    else{
                        result='0'+result;
                        isbig=0;
                    } 
                }
            }
        }
        else{
            for(;strlen<alength;++strlen){
                if(isbig==1){
                    if(a.charAt(alength-strlen-1)=='1'){
                        result='0'+result;
                        isbig=1;
                    }
                    else{
                         result='1'+result;
                        isbig=0;
                    }
                }else{
                   if(a.charAt(alength-strlen-1)=='1'){
                        result='1'+result;
                        isbig=0;
                    }
                    else{
                        result='0'+result;
                        isbig=0;
                    } 
                }
            }
            
        }
      if(isbig==1)result='1'+result;
      return result;  
        
    }
} 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   772
					772
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            