问题描述:例一
?代码实现:
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
i,j=len(num1)-1,len(num2)-1
add=0
answer=''
while i>=0 or j >=0:
x=int(num1[i]) if i>=0 else 0
y=int(num2[j]) if j>=0 else 0
sum=x+y+add
answer+=str(sum%10)
add=sum//10
i,j=i-1,j-1
if add>0:answer+=str(add)
return answer[::-1]
不要忘记最前端的进制 问题本身不难😀
?
问题描述:例二?
?两种解法
一:常规操作
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
if digits==[0]:
return [1]
else:
answer=[]
add=0
i=len(digits)-1
while i>=0:
x=digits[i]
y=1 if i==len(digits)-1 else 0
sum=x+y+add
answer.append(sum%10)
add=sum//10
i-=1
if add>0:answer+=[add]
return answer[::-1]
?
?
二:榴芒解法 Python一行代码解决
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
return [int(i) for i in str(int(''.join(map(str,digits)))+1)]
?两个差不了多少,但是第一个侧重通解(因为如果加数的位数不止一个一样可以那么做,可以看我之前的双指针博客)
问题描述:例三?
一常规解法:
class Solution:
def addBinary(self, a: str, b: str) -> str:
i,j=len(a)-1,len(b)-1
add=0
answer=''
while i>=0 or j>=0:
x=int(a[i]) if i>=0 else 0
y=int(b[j]) if j>=0 else 0
sum=x+y+add
answer=str(sum%2)+answer
add=sum//2
i,j=i-1,j-1
if add>0:answer=str(add)+answer
return answer
无非是把十进制改成二进制加法,换汤不换药?
二:榴芒解法 Pythony一行代码搞定
?
?
class Solution:
def addBinary(self, a: str, b: str) -> str:
#bin(15)='0b1111'即把整数转化为二进制数
#int('1111',2) int('A',16) 即把字符串转化成对应进制数
return bin(int(a,2)+int(b,2))[2:]
我是小郑 期待与你一起奔赴山海!?
|