第14题 最长公共前缀
最长公共缀的话只要比较最短的和最长的字符串。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs: return ""
str_min = min(strs)
str_max = max(strs)
re=str()
for i in range(len(str_min)):
if str_min[0] != str_max[0]:
return ""
break
elif str_min[i] ==str_max[i]:
re += str_min[i]
else:
break
return re
第15题 有效的括号
这题是一个大神做的,太牛逼了,看的我跪了
class Solution:
def isValid(self, s: str) -> bool:
while "()" in s or "{}" in s or "[]" in s:
s=s.replace('()','')
s=s.replace('{}','')
s=s.replace('[]','')
return s == ''
第21题 合并两个有序链表
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
res = ListNode(None)
node = res
while l1 and l2:
if l1.val < l2.val:
node.next, l1 = l1, l1.next
else:
node.next, l2 = l2, l2.next
node = node.next
if l1:
node.next = l1
else:
node.next = l2
return res.next
第26题 删除排序数组中的重复项
用的是双指针法,慢指针负责更新不同元素的位置,只有碰到不用的元素才会更新,快指针跟着数组原始的遍历同步更新,每次向后移动一个位置,慢指针记录新数组元素下标,将该元素占用之前重复元素的位置。
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
flag = 0
for i in nums:
if nums[flag] != i:
flag += 1
nums[flag] = i
return len(nums) and flag+1