• 常见高频题


    • 找出字符串 出现次数最多的字符且有几次(功夫小团子)
    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)

  • 相关阅读:
    ts查缺补漏
    linux上安装nginx
    (附源码)springboot跨境电商系统 毕业设计 211003
    酷开科技生态内容价值+酷开系统的开放性和可塑性,实现品效合一
    Modbus协议介绍及Modbus TCP
    【附源码】计算机毕业设计SSM网络调查问卷系统
    连接阿里云MaxCompute数据源报错504 Gateway Time-out
    计算机网络八股
    Day123.ElasticSearch:CAP定理、集群搭建、架构原理及分片、倒排索引、面试题
    微信小程序组件传值
  • 原文地址:https://blog.csdn.net/Maniac_wp/article/details/125517336