兩個陣列的中位數以及一個字串中最長的不重複的子串
阿新 • • 發佈:2018-11-10
題目:兩個陣列的中位數
指先找到兩個有序陣列的中位數,然後求兩個中位數的平均值
程式碼如下:
# _*_ coding: utf-8 _*_ # 題目:求兩個排序陣列的中位數的平均數 class Solution: def __init__(self, nums1, nums2): self.nums1 = nums1 self.nums2 = nums2 def getMid(self): x, y = 0, len(self.nums1) -1 p, q = 0, len(self.nums2) -1 while (y-1) >= (x+1): y -= 1 x += 1 while (q-1) >= (p+1): q -= 1 p += 1 mid1 = (self.nums1[y] + self.nums1[x])/2 mid2 = (self.nums2[q] + self.nums2[p])/2 mid = (mid1 + mid2)/2 return mid solution = Solution([1, 2, 4, 6, 8], [2, 3, 4, 5]) mid = solution.getMid() print(mid)
題目:字串中最長的不重複的子串
求一個字串中最長的裡面沒有重複字元的子串
解法借用了KMP演算法的思想
程式碼如下:
# _*_ coding:utf-8 _*_ # 題目:找一個字串中最長的不含重複字元的子串的長度 class Solution: def __init__(self, aimStr): self.str = aimStr def subStr(self): stoSubStr = [] i = 0 while i < len(self.str): temStoSubStr = [] for x in range(i, len(self.str)): if self.str[x] in temStoSubStr: break temStoSubStr.append(self.str[x]) if len(temStoSubStr) > len(stoSubStr): stoSubStr = temStoSubStr i = i + len(temStoSubStr) return len(stoSubStr) solution = Solution("agfsd") string = solution.subStr() print(string)