[LeetCode] 67. 二进制求和(简单模拟二进制求和)
发布日期:2021-06-29 21:41:14 浏览次数:3 分类:技术文章

本文共 1319 字,大约阅读时间需要 4 分钟。

题目:

给定两个二进制字符串,返回他们的和(用二进制表示)。

样例1:

a = 11

b = 1

返回 100

样例2:

输入: a = "1010", b = "1011"

输出: "10101"

C++代码:

class Solution {public:    string addBinary(string a, string b) {        int len1=a.length(),len2=b.length();        if(len1
=0){ //模拟加法 add+=a[len1]-'0'+b[len2]-'0'; ans+=add%2+'0'; add>>=1; len1--,len2--; } while(len1>=0){ //对齐加完之后还剩下的也需要加上 add+=a[len1]-'0'; ans+=add%2+'0'; add>>=1; len1--; } if(add){ //最后如果还有进位 ans+=add+'0'; } string newans=""; for(int i=ans.length()-1;i>=0;i--) newans+=ans[i]; return newans; }};

Java代码:

class Solution {    public String addBinary(String a, String b) {        if(a.equals("0")) return b;        if(b.equals("0")) return a;        String temp="";        if(a.length()
=0){ add+=a.charAt(lena)-'0'+b.charAt(lenb)-'0'; ans.append(add%2+""); add>>=1; lena=lena-1; lenb=lenb-1; } while(lena>=0){ add+=a.charAt(lena)-'0'; ans.append(add%2+""); add>>=1; lena-=1; } if(add==1){ ans.append(add+""); } ans.reverse(); return ans.toString(); }}

 

 

转载地址:https://dh-butterfly.blog.csdn.net/article/details/80874715 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:HDU1233(基础最小生成树 prim和 kruskal)
下一篇:SWUST OJ 698(dp)独立任务最优调度问题

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月11日 05时40分35秒