题解 | #牛群的编码#
牛群的编码
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();
}
}

查看30道真题和解析