leecode刷題第三天!
- 第一題:
![在這裏插入圖片描述]()
這道題要求使用鏈表,這道題的思路是一位一位地遍歷鏈表節點,設置一個進位位carry判斷是否有進位,兩節點相加的值爲新鏈表的新節點的值,這樣一直循環直到待相加的兩個鏈表都爲空,最後還要判斷是否最高爲也有進位,若有進位則新建val爲1的最高位節點,然後返回新鏈表
代碼如下:
class Solution:
def addTwoNumbers(self,l1:ListNode,l2:ListNode)->ListNode:
star0=ListNode(0)
node=star0
carry=0
s=0
while(l1 or l2):
val1=l1.val if l1 else 0
val2=l2.val if l2 else 0
s =val1+val2+carry
carry=s//10
val=s%10
node.next=ListNode(val)
if l1:
l1=l1.next
if l2:
l2=l2.next
node =node.next
if carry!=0:
node.next=ListNode(1)
return star0.next
- 第二題:
題目如下:
![在這裏插入圖片描述]()
解題思路:
![在這裏插入圖片描述]()
以下是代碼:害我真是一個勤勞的搬運工!
class Solution:
def longestPalindrome(self,s: str) -> str:
if len(s)<2:
return s
start=0
maxLength=1
def expandAroundCenter(left,right):
nonlocal maxLength
nonlocal start
while(left>=0 and right<len(s) and s[left]==s[right]):
if (right-left+1>maxLength):
maxLength=right-left+1
start=left
left-=1
right+=1
for i in range(len(s)):
expandAroundCenter(i-1,i+1)
expandAroundCenter(i,i+1)
return s[start:start+maxLength]