admin 发表于 2015-12-9 22:53:12

如何实现二进制字符串加法

      给定两个二进制字符串,返回它们的和,比如s1="10",s2="1",返回值为11。
public class Test1 {
      public static String addBinary(String s1, String s2) {
            if(s1==null || s1.length()==0)
                return s2;
            if(s2==null || s2.length()==0)
                return s1;
         
            int len1 = s1.length()-1;
            int len2 = s2.length()-1;
         
            int carry = 0;
            String result="";
            while(len1 >= 0 || len2 >=0){
                int va = 0;
                int vb = 0;
         
                if(len1 >= 0){
                  va = s1.charAt(len1)=='0'? 0 : 1;   
                  len1--;
                }
                if(len2 >= 0){
                  vb = s2.charAt(len2)=='0'? 0: 1;
                  len2--;
                }
         
                int sum = va + vb + carry;
                if(sum >= 2){
                  result+=String.valueOf(sum-2);
                  carry = 1;
                }else{
                  carry = 0;
                  result+=String.valueOf(sum);
                }
            }
            //进位
            if(carry == 1){
                result+="1";
            }
            return result;
      }
      
      public static void main(String[] args)
      {
                String s1="10";
                String s2="1";
                System.out.println(addBinary(s1,s2));
      }

}
       程序员运行结果为:
       11
页: [1]
查看完整版本: 如何实现二进制字符串加法