题解 | #牛群的编码#

牛群的编码

https://www.nowcoder.com/practice/fd18eec140244f31ac817757a54b4a39

  1. 题目考察的知识点

字符串,位运算

  1. 题目解答方法的文字分析

因为是二进制数的加减,所以可以使用位运算替代上述运算中的一些加减乘除的操作。a和b从右往左取数,求和,与2取余,把余数添加到字符串;初始化一个数来记录进位,即每次做除法得到的除数;

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param a string字符串 
     * @param b string字符串 
     * @return string字符串
     */
    public String addBinary (String a, String b) {
         StringBuffer sb = new StringBuffer();
         //指向两个字符串的末尾
         int i=a.length()-1;
         int j=b.length()-1;
         int carry = 0;//进位
         //确保还有当前位还有数需要计算
         while(i>=0||j>=0||carry!=0){
            int digitA=i>=0?a.charAt(i)-'0':0;
            int digitB=j>=0?b.charAt(j)-'0':0;

            int sum = digitA+digitB+carry;
            carry=sum>=2?1:0;//判断是否有进位
            sum=sum>=2?sum-2:sum;
            sb.append(sum);
            i--;
            j--;
         }
         return sb.reverse().toString();
    }
}
全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务