所以我在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 的方式有关,但他的所有解决方案都不起作用。 谢谢您的帮助!
调整
powerdecimal
从最高有效功率开始(目前过高)
更改此:
while resultdecimal >= 2 ** powerdecimal:
powerdecimal += 1
对此:
while resultdecimal >= 2 ** powerdecimal:
powerdecimal += 1
powerdecimal -= 1