• 'abbdsjjtb',找出该字符串中最后一个只出现一次的字符,并且得到这个字符的位置


    # !/usr/bin python3                                 
    # encoding: utf-8 -*-                            
    
    # 作业1:'abbdsjjtb',找出该字符串中最后一个只出现一次的字符,并且得到这个字符的位置
    # 分析:
    # 两个关键点:只出现一次  最后一个
    # 列表里有一个count方法可以统计列表元素出现的次数,题目给的是一个字符串,那么如何将字符串转成列表?
    # 需要统计每一个字符,那么意味着需要遍历上述转换后的列表
    # 遍历时找到每个字符对应的次数,判断为1的进行收集,使用列表
    #
    # s = 'abbdsjjtb'
    # s_list=list(s)
    # only_one_list = [] # 这个列表是用来存放只出现一次的元素的,那么他的最后一个元素就是目标
    # for char in s_list:#char就表示的是每一个字符
    #     count = s_list.count(char)
    #     if count==1:
    #         # print(char)
    #         only_one_list.append(char)
    # last_char = only_one_list[-1]
    # print(last_char)
    # # 最后得到位置
    # print(s.find(last_char))
    
    """
    1. 封装一个函数,传递任意的字符串,统计该字符串所有的子串出现的次数,并降序输出
    这个函数所做的事情,就是找出入参当中所有包含的子串
    (例如:abcdcccabcc是入参,bcd、bc都是子串,ac不是,包含关系,最少2个字符),
    并统计每一种子串在入参当中出现的次数,降序输出,例如ab出现了2次。
    """
    """
    分析:
    关键点:找所有子串   统计次数   降序输出
    找所有子串:abcdcccabcc
    第一次: ab abc abcd abcdc abcdcc abcdccc abcdccca abcdcccab abcdcccabc abcdcccabcc
    第二次: bc bcd bcdc bcdcc bcdccc bcdccca bcdcccab bcdcccabc bcdcccabcc
    第三次: cd cdc cdcc cdccc cdccca cdcccab cdcccabc cdcccabcc
    规律: 每个字符作为开始一直找到最后,两层for循环使用字符串切片得到所有子串
    统计次数: 列表里有一个count函数可以统计每一个元素出现的次数,将上述得到的所有子串存入列表
    降序输出: 由于要排序,因此每一个子串和他的次数应该具备对应关系ab:1 abc:4 abcd:5
            什么样的类型可以存储这种对应关系数据?字典
            遍历子串对应的列表,统计每一个子串的次数,并且将子串作为key,次数作为value进行存储
            按照每个子串出现的次数降序输出
    """
    
    def find_sub_str_order(s):
        # s = 'abcdcccabcc'
        length = len(s)
        sub_str_list = []
        for i in range(length):
            # s[0:2]
            # s[0:3]
            # s[0:4]
            # s[0:5]
            # s[0:12]
            for j in range(i + 2, length + 1):
                sub_str = s[i:j]
                sub_str_list.append(sub_str)
        sub_str_dict = {}
        for sub_str in sub_str_list:
            count = sub_str_list.count(sub_str)
            sub_str_dict[sub_str] = count
        print(sub_str_dict)
        # sub_str_dict.items() 字典的每一个item是一个元组('abc', 2)
        # lambda 冒号之前是入参,在这里参数就是每一个item元组kv=('abc', 2)
        # lambda 冒号之后是返回值,因为我们要按照次数进行排序,次数在每一个item元组里属于第2个元素,所以是kv[1]
        print(sorted(sub_str_dict.items(), key=lambda kv: kv[1], reverse=True))
    if __name__ == '__main__':
        find_sub_str_order('ryyrererdff')
        # s='sdjaffdh'
        # print(s[2:-3])

     

  • 相关阅读:
    CentOS7- 配置阿里镜像源
    MySQL学习笔记
    OSI&TCP/IP模型
    加密算法学习
    golang学习笔记
    Redis学习总结整理
    TCP
    HTTP/HTTPS
    HTTP2
    MVCC
  • 原文地址:https://www.cnblogs.com/zhenyu1/p/15997210.html
Copyright © 2020-2023  润新知