File tree Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Expand file tree Collapse file tree 2 files changed +73
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
3
+
4
+ 输入: "babad"
5
+ 输出: "bab"
6
+ 注意: "aba" 也是一个有效答案。
7
+ """
8
+
9
+ class Solution :
10
+ def longestPalindrome (self , s : str ) -> str :
11
+
12
+ n = len (s )
13
+ # 中心扩展
14
+ # 判断边界条件
15
+ if n == 0 :
16
+ return ""
17
+
18
+ def extend (i : int , j : int , s : str ) -> str :
19
+ while (i >= 0 and j < len (s ) and s [i ] == s [j ]):
20
+ i -= 1
21
+ j += 1
22
+ return s [i + 1 : j ]
23
+
24
+ max_len = 1
25
+ tmp = s [0 ]
26
+ for i in range (n - 1 ):
27
+ e1 = extend (i , i , s )
28
+ e2 = extend (i , i + 1 , s )
29
+ max_e = max (len (e1 ), len (e2 ))
30
+ if max_e >= max_len :
31
+ max_len = max_e
32
+ tmp = e1 if len (e1 ) > len (e2 ) else e2
33
+ return tmp
Original file line number Diff line number Diff line change
1
+ """ 24. 两两交换链表中的节点
2
+ 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
3
+ 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
4
+ 输入:head = [1,2,3,4]
5
+ 输出:[2,1,4,3]
6
+ 输入:head = []
7
+ 输出:[]
8
+ 输入:head = [1]
9
+ 输出:[1]
10
+
11
+ 时间: O(n), 空间: O(1)
12
+ """
13
+
14
+ # Definition for singly-linked list.
15
+ class ListNode :
16
+ # 系统给出
17
+ def __init__ (self , val = 0 , next = None ):
18
+ self .val = val
19
+ self .next = next
20
+ class Solution :
21
+
22
+ def swapPairs (self , head : ListNode ) -> ListNode :
23
+ # 建立伪节点
24
+ dummy = ListNode (0 )
25
+ # 将链表与伪节点连接
26
+ dummy .next = head
27
+ cur = dummy
28
+ # 当存在下一个和下下一个节点时
29
+ while cur .next and cur .next .next :
30
+ preNode , forNode = cur .next , cur .next .next
31
+ # 开始反转preNode和forNode节点
32
+ cur .next = forNode
33
+ # 一定要先将反转后的前一个节点与反转前的forNode的下一个节点去关联,即连接到剩余还未反转的节点上
34
+ preNode .next = forNode .next
35
+ # 反转节点
36
+ forNode .next = preNode
37
+ # 更新cur节点位置
38
+ cur = cur .next .next
39
+ return dummy .next
40
+
You can’t perform that action at this time.
0 commit comments