leetcode刷題12天
1.這道題其實挺簡單的,但是要注意最後面是空格的情況,我的方法是使用一個key來標註從後往前第一個不是空格的位置,這樣從key一直到0判斷單詞的長度,代碼如下:
class Solution:
def lengthOfLastWord(self, s: str) -> int:
if s==" ":
return 0
elif len(s)==1 or len(s)==0:
return len(s)
else:
length=len(s)
count=0
key=length
for i in range(length-1,-1,-1):
if s[i]==' ':
key=i
continue
else:
break
if key==0:#字符串全爲空格的情況
return 0
for j in range(key-1,-1,-1):#判斷單詞長度
if s[j]!=' ':
count+=1
continue
else:
return count
return count#特殊情況,a+空格
2.題目如下:
我真是一個憨憨,編程能力太弱了,完全按照死方法在做,老老實實按照最後一個依次相加,判斷進位,最後再加位數多的,到了最後若還有進位,則將進位加上去,代碼如下:
class Solution:
def addBinary(self, a: str, b: str) -> str:
length1=len(a)
i=length1-1
length2=len(b)
j=length2-1 result=[]
ad=0#進位
sum=0
while i!=-1 and j!=-1:
sum=int(a[i])+int(b[j])+ad
if sum<2:
result.append(sum)
i-=1
j-=1
ad=0
continue
else:
result.append(sum%2)
i-=1
j-=1
ad=1
continue
if i!=-1 :
for key in range(i,-1,-1):
sum=int(a[key])+ad
if sum>=2:
result.append(sum%2)
ad=1
else:
ad=0
result.append(sum)
if j!=-1 :
for key in range(j,-1,-1):
sum=int(b[key])+ad
if sum>=2:
result.append(sum%2)
ad=1
else:
ad=0
result.append(sum)
if ad==1:
result.append(1)
result.reverse()
result=[str(i) for i in result]
return ''.join(result)