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