资讯专栏INFORMATION COLUMN

Leetcode 67:Add Binary(二进制求和)

chenjiang3 / 3401人阅读

摘要:给定两个二进制字符串,返回他们的和用二进制表示。返回的数值是以开头,表明返回的数值是二进制函数用于将一个字符串或数字转换为整型。指定为非十进制时,需以字符串形式传入从第三个元素开始截取,忽略

(python、java)
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
解题思路(Java):
Java:由于Java语言不像 C/C++ ,Java字符串 String 不可变,比较字符串不能用 “=” ,”=“ 会比较字符串是否为同一个对象,而不是比较字符串内容是否相同。StringBuilder 可操作性较好,可用来记录每一位数 相加后的最终值。
所以这道题输入字符串可利用 chatAt() 方法(用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。)转化为char字符,减去字符 ‘0’ ,得 int 型数值 0 或 1 ,分别与sum累加 。
java:
class Solution {

public String addBinary(String a, String b) {
    int i=a.length()-1,j=b.length()-1,tmp=0,sum;
    StringBuilder str=new StringBuilder();
    while (i>=0||j>=0){
        sum=tmp;
        if(i>=0) sum += a.charAt(i--)- "0";
        if(j>=0) sum += b.charAt(j--)- "0";
        tmp=sum/2;//tmp记录是否进一位
        str.append(sum%2);//sum%2得余数,即为该位 最终数字
    }
    if(tmp!=0) str.append(tmp);
    return str.reverse().toString();//将 StringBuilder 所得倒置后即为答案,转为 String返回
}

}
解题思路(python3):
python3明显灵活很多:
bin()函数 -- 返回一个整数 int 或者长整数 long int 的二进制表示。
返回的数值是以0b开头,表明返回的数值是二进制
int() 函数用于将一个字符串或数字转换为整型。
class int(x, base=10)
x -- 字符串或数字。
base -- 进制数,默认十进制。(指定base为非十进制时,x 需以字符串形式传入)
python3:
class Solution:

def addBinary(self, a: str, b: str) -> str:
    """
    :type a: str
    :type b: str
    :return: str
    """
    return bin(int(a,2)+int(b,2))[2:] #[2:]从第三个元素开始截取,忽略 0b

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44136.html

相关文章

  • Leetcode 67Add Binary(进制求和)

    摘要:给定两个二进制字符串,返回他们的和用二进制表示。返回的数值是以开头,表明返回的数值是二进制函数用于将一个字符串或数字转换为整型。指定为非十进制时,需以字符串形式传入从第三个元素开始截取,忽略 (python、java)Given two binary strings, return their sum (also a binary string).The input strings a...

    sf190404 评论0 收藏0
  • leetcode67 binary add 进制加法计算

    摘要:题目要求将两个二进制字符串相加结果以二进制字符串的形式返回要格外注意可能会在最高位存在进位想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号将会不定期的发放福利哦 题目要求:将两个二进制字符串相加结果以二进制字符串的形式返回要格外注意可能会在最高位存在进位 /** * @author rale * * Given two binary strings, r...

    DevTTL 评论0 收藏0
  • leetcode_67 Add Binary

    摘要:,,这道题就是求两个表示为字符串形式的二进制数字的和。最初我的想法是直接对两个字符串相对应的位进行直接运算,再用一个变量来表示进位,这里我选择将较短的字符串前面用补位,以获得两个相同长度的字符串进行逐位运算。 Given two binary strings, return their sum (also a binary string).For example,a = 11,b = ...

    codeGoogle 评论0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月汇总(100 题攻略)

    摘要:月下半旬攻略道题,目前已攻略题。目前简单难度攻略已经到题,所以后面会调整自己,在刷算法与数据结构的同时,攻略中等难度的题目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道题,目前已攻略 100 题。 一 目录 不折腾的前端,和咸鱼有什么区别...

    tain335 评论0 收藏0
  • 前端 | 每天一个 LeetCode

    摘要:在线网站地址我的微信公众号完整题目列表从年月日起,每天更新一题,顺序从易到难,目前已更新个题。这是项目地址欢迎一起交流学习。 这篇文章记录我练习的 LeetCode 题目,语言 JavaScript。 在线网站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公众号: showImg(htt...

    张汉庆 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<