• 常见高频题


    • 找出字符串 出现次数最多的字符且有几次(功夫小团子)
    1. def collect(string1):
    2. dic = {}
    3. for i in set(string1):
    4. dic[i] = string1.count(i)
    5. for k, v in dic.items():
    6. if v == max(dic.values()):
    7. print(k,v)
    8. if "__name__" == "__name__":
    9. string1 = "aaaabbbbbbccccccdd"
    10. collect(string1)

    优化

    1. def collect(string1):
    2. dic = {}
    3. max_number = -1
    4. for i in set(string1):
    5. dic[i] = string1.count(i)
    6. if max_number < string1.count(i):
    7. max_number = string1.count(i)
    8. for key , value in dic.items():
    9. if max(dic.value) == value:
    10. print(key, value)

    • 括号匹配(宇宙)
      1. def check(string1):
      2. left = "{(["
      3. right = "})]"
      4. dic = dict(zip(left,right))
      5. list1 = []
      6. for i in string1:
      7. if i in left:
      8. list1.append(i)
      9. elif i in right:
      10. # 匹配 / 不匹配
      11. if list1 and dic[list1[-1]] == i:
      12. list1.pop()
      13. else:
      14. return False
      15. return len(list1) == 0
      16. string1 = "{}{}{}[]"
      17. print(check(string1))

    二分查找

    1. def binary_search_1(alist,item):
    2. n = len(alist)
    3. first = 0
    4. last = n-1
    5. while first <= last:
    6. mid = (first + last) // 2
    7. if alist[mid] == item:
    8. return True
    9. elif alist[mid] < item:
    10. first = mid + 1
    11. else:
    12. last = mid - 1
    13. return False
    • 最大回文数
    1. class Solution:
    2. def longestPalindrome(self, s):
    3. if (len(s) < 2):
    4. return s
    5. start = 0 #记录最长回文子串开始的位置
    6. maxLen = 0 #记录最长回文子串的长度
    7. for i in range(len(s) - 1):
    8. for j in range(i,len(s)):#j从i开始,不从i+1开始,s=‘ac’就能选第一个‘a’
    9. # 法一:截取所有子串,然后在逐个判断是否是回文的
    10. # 法二(优化):截取所有子串,如果截取的子串小于等于之前遍历过的最大回文串,直接跳过。
    11. # 因为截取的子串即使是回文串也不可能是最大的,所以不需要判断
    12. if (j - i < maxLen):
    13. continue
    14. if self.isPalindrome(s, i, j) and (maxLen < j - i + 1):
    15. # maxLen为最大长度时,后面maxLen<j-i+1 就为False,能保证截取最长回文字符串
    16. start = i
    17. maxLen = j - i + 1
    18. return s[start:start + maxLen]
    19. # 判断是否是回文串
    20. def isPalindrome(self,s,start,end):
    21. while (start < end) :
    22. if s[start] != s[end]:
    23. return False
    24. start += 1
    25. end -= 1
    26. return True
    27. s = "ac"
    28. S = Solution()
    29. result = S.longestPalindrome(s)
    30. print(result)

  • 相关阅读:
    LeetCode 961. N-Repeated Element in Size 2N Array
    Webpack5 搭建Vue项目(进阶版)
    HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看
    基于 LSTM 进行多类文本分类(附源码)
    css3 hover效果
    驱动开发LED灯绑定设备文件
    海康相机SDK二次开发C++程序
    教你如何搭建一个大学生查题公众号
    【目标跟踪】多目标跟踪测距
    Rsync远程同步
  • 原文地址:https://blog.csdn.net/Maniac_wp/article/details/125517336