leetcode -- 67. Add Binary【统一形式简化代码+双指针 + 二进制规则 + 字符数字转换】


题目

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) {
        char[] A = a.toCharArray();
        char[] B = b.toCharArray();
        StringBuilder sb =  new StringBuilder();
        int highA = a.length() -1;
        int highB = b.length() -1;
        
        int pre = 0;
        int numberA = 0;
        int numberB = 0;
        int bitResult = 0;
    
//关键代码: 统一形式处理。
        while(highA >= 0 || highB >= 0 || pre >0){
        	numberA = highA >=0 ? (A[highA] - '0'):0; //统一形式
        	numberB = highB >= 0 ? (B[highB] - '0'):0;
        	highA --;
        	highB --;
        	
        	bitResult = numberA + numberB + pre;
        	if(bitResult == 0){
        		sb.append('0');
        		pre = 0;
        	}else if(bitResult == 1){
               sb.append('1');
        		pre = 0; 
            }else if(bitResult == 2){
        		sb.append('0');
        		pre = 1;
        	}else{
        		sb.append('1');
        		pre = 1;
        	}
        }
        return sb.reverse().toString();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值