zoukankan      html  css  js  c++  java
  • Python中常见的字符串小笔试题

    1.获取实现两个字符串中最大的公共子串

    思路:

        1.比较两个字符串的长度

      2.获取较短字符串的所有子串

      3.使用__contains__函数进行比较

      4.把子串当做键,子串长度作为值,存入字典,通过值,反过来取出所有这个长度的值,做到同样长度下多个值得情况

    # coding=utf-8
    str1 = "abcdef"
    str2 = "efdrabcefghdef"
    max_str = ""
    min_str = ""
    list1 = []
    
    def list_str(max_str, min_str):  # 2.获取较短字符串的所有子串
        count = 0
        n= len(min_str)
        while count < n:
            for i in range(n):
                list1.append(min_str[count:i + 1])
            count += 1
    
    
    # 3.判断较长字符串是否含有子串
    def end():
        dict1 = {}
        for i in list1:
            if max_str.__contains__(i):
                dict1[i] = len(i) # 把值当做键,把长度作为值
        value1= max(dict1.values())
        for key,value in dict1.items(): # 通过遍历,找到所有这个长度的值
            if value== value1:
                print(key)
    
    # 1.首先判断两字符串长度
    def start(str1, str2):
        global max_str, min_str
        max_str, min_str = str1, str2
        if len(max_str) < len(min_str):
            max_str, min_str = str2, str1
            list_str(max_str, min_str)  # 2.获取子串
        list_str(max_str, min_str)
        end()  # 3,判断
    
    
    if __name__ == '__main__':
        start(str1, str2)  # 0.开始比较长度

    2.给定几个字符串,输入一个字符,如果第一个字符相同,再输入第二个,同样情况,继续输入,直到找到唯一的字符串

      思路

      1.把给出的字符串放入一个列表中

      2.输入字符,遍历列表,使用startswith()方法

      3.将比较的结果进行判断

      4.回调

    # coding=utf-8
    
    list1 = []
    str1 = "Mon"
    str2 = "Mabc"
    str3 = "Mongddd"
    list1.append(str1)
    list1.append(str2)
    list1.append(str3)
    last = ""  # 存储最后要输出的字符串
    count = 0  # 用来标识是否有以输入字符开头的字符串
    str_input = ""  # 存储输入的字符串
    
    
    def compare(input_str):
        global count, last
        count = 0
        for i in list1:
            if i.startswith(input_str):
                count += 1
                last = i
    
    
    def back():
        global str_input
        if count == 1:  # 如果是1,说明只有1个字符串有,则输出
            print(last)
        elif count >= 2:  # 如果没有,则继续输入,并且拼接上前面输入的字符串
            input_str = input("请继续输入字母")
            str_input = str_input + input_str
            compare(str_input)  # 重新调用比较
            back() #回调本身,进行验证
    
    
    if __name__ == '__main__':
        input_str = input("输入一个字母")
        str_input = input_str
        input_str = 'M'
        compare(input_str)  # 调用比较是否有哪个字符串以这个字符开头
        back()

    3.给定一个字符串,根据字符出现的频度排序,例如"abcc",排序后的结果为"ccba"或者"ccab"

      思路

      1.把所有字符串转换成列表

      2.使用max(set(list1),key=list1.count)方法求出列表中出现频度最大的字符串

      3.请求出现的次数,并在列表中移除这个元素

      4.根据列表的长度进行回调

    # coding=utf-8
    str1 = "abcc"
    list1 = list(str1)
    last_str = ""  # 最终输出的字符串
    
    
    def max_count_str(list_temp):  # 判断出现频度最大的字符串
        return max(set(list_temp), key=list_temp.count)
    
    
    def count_judge(str_temp):  # 请求出现的频度,并在列表中去除这个元素
        count = 0
        while True:
            if str_temp in list1:
                list1.remove(str_temp)
                count += 1
            else:
                break
        return count
    
    
    def start():
        global last_str
        str_temp = max_count_str(list1)  # 请出出现频度最大的字符
        count = count_judge(str_temp)  # 请求出现的频度,并在列表中去除这个元素
        last_str = last_str + str_temp * count  # 进行字符串拼接
        if len(list1) > 0:
            start()  # 如果列表中还有元素,回调,继续比较
    
    
    if __name__ == '__main__':
        start()
        print(last_str)
  • 相关阅读:
    Hbase安装配置
    HBASE概念补充
    Hbase概述
    qt creator源码全方面分析(2-8)
    qt creator源码全方面分析(2-7)
    qt creator源码全方面分析(2-6)
    qt creator源码全方面分析(2-5)
    qt creator源码全方面分析(2-3)
    qt creator源码全方面分析(2-2)
    qt creator源码全方面分析(2-4)
  • 原文地址:https://www.cnblogs.com/greatfish/p/6044950.html
Copyright © 2011-2022 走看看