• 几个算法题解


    import math
    import time
    import random
    import string
    from scipy.stats import t
    
    #喊七,按照题目要求,实质就是对输入数据进行排序即可,由大到小、
    #喊七,逢七过,未知人数,未知什么时候结尾,在只知道每个人喊了多少次过的情况下,需要根据每个人喊过的次数来重新排列出他们分别是在几号位,即第几个开始喊的
    
    def seven_counts(player_num,ed_num):
        temp_list = ['过' if i % 7 == 0 or '7' in str(i) else i for i in range(1,ed_num)]
        temp_dict = {}
        all_value = []
        for i in range(math.ceil(len(temp_list)/player_num)):
            all_value.append(temp_list[player_num*i:(i+1)*player_num])
        for i in range(len(all_value)):
            for j in range(len(all_value[i])):
                if all_value[i][j] == '过' and j not in temp_dict.keys():
                    temp_dict[j] = 1
                elif all_value[i][j] == '过':
                    temp_dict[j] += 1
                else:
                    pass
        return temp_dict
    
    def seven_function():
        input_value = input('please input the num:\t')
        origin_list = input_value.split(' ')
        player_num = len(origin_list)
        counts = sum([int(i) for i in origin_list])
        s = 1
        while True:
            result = seven_counts(player_num,s)
            s += 1
            if sum(list(result.values())) == counts:
                for i in range(len(result.keys())):
                    print(result[i],end=' ')
                break
    
    #最长子字符串长度,首尾相连成环形、
    #统计以o结尾且为偶数位的长度,如果字符串中含o的个数为奇数,则取到前一个即可
    def length_str(strs):
        temp_list = []
        for i in range(len(strs)):
            if strs[i] == 'o':
                temp_list.append(i)
        if len(temp_list) % 2 == 0:
            print(temp_list[len(temp_list)-1] + 1)
        #     print(max(len(temp_list)))
        else:
            print(temp_list[len(temp_list) - 2] + 1)
    # 字符串统计及排序
    #统计一个字符串中每个字母出现的次数并排序,按照字母自然顺序排列
    def sort_str(strs):
        temp_dict = {}
        for word in strs:
            if word not in temp_dict.keys():
                temp_dict[word] = 1
            else:
                temp_dict[word] += 1
        for keys_word in string.ascii_letters:
            for j in temp_dict.keys():
                if j == keys_word:
                    print('%s:%s'%(j,temp_dict[j]),end=';')
    
    #字符串反转
    #将每个字符串做为一个基本元素对象进行翻转
    def reverse_words(strs):
        args_word = strs.split('\n')
        st_num = int(args_word[1])
        ed_num = int(args_word[2])
        words = args_word[0].split(' ')
        words[st_num:ed_num+1] = words[st_num:ed_num+1][::-1]
        print(' '.join(words))

    说明:如果有人看了这个文档之后,题目建议自己去找一下,我这边只是为了方便自己看一下逻辑,所以题目没有写的很清楚,只写了一些关键字。

  • 相关阅读:
    Ajax 使用流程详解
    c语言每日一练(15)
    基于Sentinel的微服务保护
    win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块
    Doris入门到精通-阶段一(简介&安装&使用)
    2023年中国医疗传感器行业现状分析:市场国有化率低[图]
    文心一言 VS 讯飞星火 VS chatgpt (121)-- 算法导论10.4 2题
    STM32-HAL库06-硬件IIC驱动FM24CL16B非易失存储器
    Qt Creator 创建 Qt 默认窗口程序
    Grid 网格响应式布局教程
  • 原文地址:https://blog.csdn.net/qq_44862918/article/details/126932811