思路:创建一个指针来保存进位,创建空字符串保存当前的结果
def addStrings(num1: str, num2: str):
res = ''
i1, i2, carry = len(num1)-1,len(num2)-1,0
while i1>=0 or i2>=0:
x = ord(num1[i1]) - ord('0') if i1>=0 else 0
y = ord(num2[i2]) - ord('0') if i2>=0 else 0
sum =x + y + carry
res += str(sum%2)
carry = sum//2
i1 -= 1
i2 -= 1
if carry == 1:
res += '1'
return res[::-1]
print(addStrings('101','1011'))
补充知识点
- Python ord() 函数的使用
描述:ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
语法:ord©
返回值:返回一个字符对应的ASCII码。
实例:ord(‘a’)
result:97
将一个x字符转换为整数的方式 - ord(x)-ord(‘0’)
例如:“1”:ord(‘1’)-ord(‘0’)=1(int):ord(‘1’)= 49,ord(‘0’)=48 - int()也可用于十进制的转换:int(‘1101’,2)=13(2进制转换成十进制),int(‘23’,8)=19(8进制转换成十进制)
- 本题是为了避免使用到int()
,