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]