本文主要是介绍Leetcode67---二进制求和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://leetcode.cn/problems/add-binary/description/
给出的两个二进制,我们可以从最后开始往前运算。
给当前短的一位前面补充0即可。
class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?StringBuilder sb = new StringBuilder();int ca=0;//和链表的两数相加类似 i>=0 如果下标小于了0就给当前的补充0即可。for(int i=a.length()-1,j=b.length()-1;i>=0||j>=0;i--,j--){int sum=ca;sum+=i>=0?a.charAt(i)-'0':0;sum+=j>=0?b.charAt(j)-'0':0;sb.append(sum%2);ca=sum/2;}sb.append(ca==1?ca:"");return sb.reverse().toString();}
}
通过 i>=0||j>=0 保证最长的运算完成。
通过i>=0,来给短的那一个补充0.
sum+=i>=0?a.charAt(i)-‘0’:0;
sb.append() sum和2进行取模,因为二进制满2就需要往前进一个。
最后的ca如果是前一位进上来为1,那么还要添加上去。
最后反转即可。
这篇关于Leetcode67---二进制求和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!