题解 | #牛群的编码#

牛群的编码

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();
    }
}
全部评论

相关推荐

神哥不得了:神哥来啦~自我评价和校园经历的话可以直接删了,从大厂暑期的话应该没有什么太多问题,应该是能拿到很多大厂面试机会的,就是在面试的时候表示的好一点就行,可以在面试前先把高频top 50的八股多巩固几遍,千万不要看那些假高频八股,这两个项目的话问题不是很大,应该能够帮你找到大厂实习的,算法的话一定要刷起来,因为大厂有些还是比较看重算法的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务