leetcode 上添加两个二进制字符串以获得二进制字符串结果的入门问题

问题描述 投票:0回答:1

所以我在leetcode上遇到了这个问题,你得到2个带有二进制值的字符串,并且你必须将它们的总和作为二进制字符串返回。但是,某些测试用例(例如 a='11' b='1')不会返回正确的答案。我问过chatGPT,但他也找不到问题所在。 这是我第二次使用 stackoverflow,如果我没有正确遵循问题协议,很抱歉。

class Solution(object):
    def addBinary(self, a, b):
        adecimal=0
        bdecimal=0
        powera=0
        powerb=0
        for x in a[::-1]:
            if x=='1':
                adecimal+=2**powera
            powera+=1
        for i in b[::-1]:
            if i=='1':
                bdecimal+=2**powerb
            powerb+=1
        resultdecimal=adecimal+bdecimal
        powerdecimal=0
        resultstring=''
        while resultdecimal>=2**powerdecimal:
            powerdecimal+=1
        while resultdecimal!=0:
            if resultdecimal>=2**powerdecimal:
                resultdecimal-=2**powerdecimal
                powerdecimal-=1
                resultstring+='1'
            else:
                powerdecimal-=1
                resultstring+='0'
        resultstring=resultstring[::-1]
        
        return resultstring

因此,对于示例 a='11' b='1',它返回 '10',而它应该返回 '100'。 chatGPT 说这与我计算 powerdecimal 的方式有关,但他的所有解决方案都不起作用。 谢谢您的帮助!

python string binary
1个回答
0
投票

调整

powerdecimal
从最高有效功率开始(目前过高)

更改此:

while resultdecimal >= 2 ** powerdecimal:
    powerdecimal += 1

对此:

while resultdecimal >= 2 ** powerdecimal:
    powerdecimal += 1
powerdecimal -= 1
© www.soinside.com 2019 - 2024. All rights reserved.