题解 | #牛群的编码#

牛群的编码

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();
    }
}

全部评论

相关推荐

01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务