题解 | #牛群的编码#

牛群的编码

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

知识点

字符串

解题思路

从后往前遍历两个字符串,有一个不为空就要继续遍历。

定义一个carry进位来保存两个字符遍历的字符相加的进位。

用StringBuilder保存每一次相加的和对2的余数。

最后注意还需要保存进位。

Java题解

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param a string字符串 
     * @param b string字符串 
     * @return string字符串
     */
    public String addBinary (String a, String b) {
        // write code here
        int carry = 0;
        int n = a.length() - 1,m = b.length() - 1;
        StringBuilder sb = new StringBuilder();
        while(n >= 0 || m >= 0){
            int num1 = 0, num2 = 0;
            if(n >= 0){
                num1 = a.charAt(n) - '0';
            }
            if(m >= 0){
                num2 = b.charAt(m) - '0';
            }
            n --; m --;
            int num = (num1 + num2 + carry) % 2;
            carry = (num1 + num2 + carry) / 2;
            sb.append(num);
        }
        if(carry > 0) {
            sb.append(carry);
        }
        sb.reverse();
        return sb.toString();
    }
}

全部评论

相关推荐

野猪不是猪🐗:这种直接口头上答应,骗面试,面完了直接拉黑,相当于给自己攒面经了(
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务