题目:
思路:
给出的是a和b两个字符串,倒序计算字符串对应的值,判断留在本位的是什么,是否需要进位,如果进位那么下一位的计算除了字符串对应的数还包括要进的一位,留在本位的this可以通过取模计算,进位则只要this的计算结果大于1就是要进位,另外还要注意最后一位可能还要进位,所以在a和b字符串都计算完后还要再判断一次是否有进位。
代码:
class Solution:
def addBinary(self, a: str, b: str) -> str:
a_index = len(a) - 1
b_index = len(b) - 1
new = '' # 新的返回的字符串(运算过后的)
k = 0 # 进位符
if a_index >= b_index:
while b_index >= 0:
this = k + int(a[a_index]) + int(b[b_index])
if this > 1:
k = 1
else:
k = 0
this = this%2
new = str(this) + new
b_index -= 1
a_index -= 1
while a_index >= 0:
this = k + int(a[a_index])
if this > 1:
k = 1
else:
k = 0
this = this % 2
new = str(this) + new
a_index -= 1
if k == 1:
new = str(k) + new
else:
while a_index >= 0:
this = k + int(a[a_index]) + int(b[b_index])
if this > 1:
k = 1
else:
k = 0
this = this % 2
new = str(this) + new
b_index -= 1
a_index -= 1
while b_index >= 0:
this = k + int(b[b_index])
if this > 1:
k = 1
else:
k = 0
this = this % 2
new = str(this) + new
b_index -= 1
if k == 1:
new = str(k) + new
return new
结果:
关于LeetCode的解题方法欢迎大家一起讨论~