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)