Python刷题练习

news2025/5/16 20:59:34

文章目录

    • 1.寻找相同字串
    • 2.密钥格式化
    • 3.五键键盘的输出
    • 4.单词重量
    • 5.输出指定字母在字符串的中的索引
    • 6.污染水域
    • 7.九宫格按键输入
    • 8.任务最优调度
    • 9.高效的任务规划


1.寻找相同字串

题目描述:
给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输出该子串第一个字符的下标。

输入描述:
输入文件包括两行 分别表示字符串t和p
保证t的长度不小于p
且t的长度不超过1000000
p的长度不超过10000

输出描述:
如果能从t中找到一个和p相等的连续子串,则输出该子串第一个字符在t中的下标,下标从左到右依次为1,2,3,…;
如果不能,则输出 “No”
如果含有多个这样的子串,则输出第一个字符下标最小的

用例:
输入:AVERDXIVYERDIAN
RDXI
输出:4

"""寻找相同字串"""

def search_same_string(t: str, p: str):
    """"""
    t_len = len(t)
    p_len = len(p)
    for i in range(t_len):
        if t[i] == p[0]:
            for j in range(p_len):
                if t[i+j] != p[j]:
                    break
            else:
                return i + 1

    return "No"

t = "AVERDXIVYERDIAN"
p = "RDXI"
result = search_same_string(t, p)
print(result)

2.密钥格式化

题目描述:
给定一个非空字符串 S,其被 N 个’-‘分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的串每 K 个用’-‘分隔,并将小写字母转换为大写。

输入描述:
正整数 K 和‘-’分割的字符串,如:
2
25G3C-abc-d

输出描述:
转换后的字符串

用例1:
输入:4
5F3Z-2e-9-w
输出:5F3Z-2E9W

用例2:
输入:2
2-5g-3-J
输出:2-5G-3J

"""密钥格式化"""

def key_format(k: int, s: str):
    """"""
    s_split = s.split("-")
    post_s = "".join(s_split[1:]).upper()

    post_s_split = [post_s[i:i+k] for i in range(0, len(post_s), k)]
    post_s = "-".join(post_s_split)

    result = f"{s_split[0]}-{post_s}"
    return result

k = 4
s = "5F3Z-2e-9-w"
result = key_format(k, s)
print(result)

3.五键键盘的输出

题目描述:
有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。
a键在屏幕上输出一个字母a;
ctrl-c将当前选择的字母复制到剪贴板;
ctrl-x将当前选择的字母复制到剪贴板,并清空选择的字母;
ctrl-v将当前剪贴板里的字母输出到屏幕;
ctrl-a选择当前屏幕上的所有字母。

注意:
剪贴板初始为空,新的内容被复制到剪贴板时会覆盖原来的内容
当屏幕上没有字母时,ctrl-a无效
当没有选择字母时,ctrl-c和ctrl-x无效
当有字母被选择时,a和ctrl-v这两个有输出功能的键会先清空选择的字母,再进行输出
给定一系列键盘输入,输出最终屏幕上字母的数量。

输入描述:
输入为一行,为简化解析,用数字1 2 3 4 5代表a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键的输入,数字用空格分隔。

输出描述:
输出一个数字,为最终屏幕上字母的数量。

用例1:
输入:[1, 1, 1]
输出:3

用例2:
输入:[1, 1, 5, 1, 5, 2, 4, 4]
输出:2

"""5键键盘的输出"""

def five_key_board(opts: list):
    """"""
    output = ""
    select = ""
    backup = ""
    
    for n in opts:
        if n == 1:
            if select:
                output = ""
                select = ""
            output += "a"

        if n == 2:
            if not select:
                continue
            backup = select

        if n == 3:
            if not select:
                continue
            backup = select
            output = ""

        if n == 4:
            if select:
                output = ""
                select = ""
            output += backup

        if n == 5:
            if not output:
                continue
            select = output

    return len(output)

opts = [1, 1, 5, 1, 5, 2, 4, 4]
result = five_key_board(opts)
print(result)

4.单词重量

题目描述:
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V。

输入描述:

输出描述:

用例1:
输入:“Who Love Solo”
输出:3.67

"""单词重量"""

def word_weight(s: str):
    """"""
    words = s.split()
    words_len = len(words)

    all_w = 0
    for word in words:
        all_w += len(word)

    result = round(all_w / words_len, 2)
    return result

s = "Who Love Solo"
result = word_weight(s)
print(result)

5.输出指定字母在字符串的中的索引

题目描述:
给定一个字符串,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。
相同字母输出第一个出现的位置。

输入描述:

输出描述:

用例1:
输入:hAkDAjByBq
4
输出:6

"""输出指定字母在字符串的中的索引"""

def output_index(s: str, k: int):
    """"""
    new_s = sorted(s)
    s_len = len(s)
    for i in range(s_len):
        if s[i] == new_s[k-1]:
            return i

s = "hAkDAjByBq"
k = 4
result = output_index(s, k)
print(result)

6.污染水域

题目描述:
输入一行字符串,字符串可转换为N*N的数组,数组可认为是一个水域,判断多少天后,水域被全部污染。
数组中只有0和1,0表示纯净,1表示污染,每天只可污染上下左右的水域,如果开始全部被污染,或永远无法污染,则返回-1。

输入描述:

输出描述:

用例1:
输入:[[1,0,1], [0,0,0], [1,0,1]]
输出:2

用例2:
输入:[[0,0], [0,0]]
输出:-1

"""污染水域"""

def pollute_water(nums: list):
    """"""
    polluted = []
    nums_len = len(nums)
    for x in range(nums_len):
        for y in range(nums_len):
            if nums[x][y] == 0:
                continue
            polluted.append((x, y))

    if not polluted or len(polluted) == nums_len * nums_len:
        return -1

    def operate():
        polluted_len = len(polluted)
        for i in range(polluted_len):
            x = polluted[i][0]
            y = polluted[i][1]
            if x - 1 >= 0 and (x - 1, y) not in polluted:
                polluted.append((x - 1, y))
            if x + 1 < nums_len and (x + 1, y) not in polluted:
                polluted.append((x + 1, y))
            if y - 1 >= 0 and (x, y - 1) not in polluted:
                polluted.append((x, y - 1))
            if y + 1 < nums_len and (x, y + 1) not in polluted:
                polluted.append((x, y + 1))

    day = 1
    while True:
        operate()
        if len(polluted) == nums_len * nums_len:
            return day
        day += 1

nums = [
    [1, 0, 1],
    [0, 0, 0],
    [1, 0, 1],
]
result = pollute_water(nums)
print(result)

7.九宫格按键输入

题目描述:
九宫格按键输入,输出显示内容,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/”或者其他字符,则循环中断。
字符对应关系如图:
1: ,.
2: abc
3: def
4: ghi
5: jkl
6: mno
7: pqrs
8: tuv
9: wxyz
#:
0: 空格
/:
要求输入一串按键,输出屏幕显示。

输入描述:
输入范围为数字 0~9 和字符’#’、’/’,输出屏幕显示,例如,
在数字模式下,输入 1234,显示 1234
在英文模式下,输入 1234,显示 ,adg

输出描述:
#用于切换模式,默认是数字模式,执行#后切换为英文模式;
/表示延迟,例如在英文模式下,输入 22/222,显示为 bc;
英文模式下,多次按同一键,例如输入 22222,显示为 b;

用例1:
输入:“123#222235/56”
输出:“123adjjm”

"""九宫格按键输入"""

def nine_key_input(s: str):
    """"""
    nums_dict = {
        "1": ",.",
        "2": "abc",
        "3": "def",
        "4": "ghi",
        "5": "jkl",
        "6": "mno",
        "7": "pqrs",
        "8": "tuv",
        "9": "wxyz",
        "#": "",
        "0": "空格",
        "/": "",
    }
    num_mode = True
    num_index = ["-1", 0]
    output = []
    s_len = len(s)
    for i in range(s_len):
        if s[i] == "/":
            num_index = ["-1", 0]
            continue

        if s[i] == "#":
            num_mode = False
            continue

        if num_mode:
            output.append(s[i])
            num_index = ["-1", 0]
            continue

        if s[i] == "0":
            output.append(" ")
            continue

        if s[i] == num_index[0]:
            s_i_len = len(nums_dict[s[i]])
            if num_index[1] + 1 == s_i_len:
                num_index[1] = 0
            else:
                num_index[1] += 1
            output[-1] = nums_dict[s[i]][num_index[1]]
            continue

        output.append(nums_dict[s[i]][0])
        num_index = [s[i], 0]

    result = "".join(output)
    return result

s = "123#222235/56"
result = nine_key_input(s)
print(result)

8.任务最优调度

题目描述:
给定一个正整数数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。
请计算执行完所有任务所需的最短时间。
任务执行规则如下:
1.任务可以按任意顺序执行,且每个任务执行耗时间均为1个时间单位。
2.两个同类型的任务之间必须有长度为N个单位的冷却时间,比如N为2时,在时间K执行了类型3的任务,那么K+1和K+2两个时间不能执行类型3任务。
3.系统在任何一个单位时间内都可以执行一个任务,或者等待状态。
说明:数组最大长度为1000,数组最大值1000。

输入描述:
1.第一行记录一个用半角逗号分隔的数组,数组长度不超过1000,数组元素的值不超过1000,
2.第二行记录任务冷却时间,N为正整数,N<=100。

输出描述:
输出为执行完所有任务所需的最短时间。

用例1:
输入:[2, 2, 2, 3]
2
输出:7

"""任务最优调度"""

def task_optimal_solution(nums: list, n: int):
    """"""
    nums_len = len(nums)
    min_time = 0

    task = 1
    task_seq = []
    while task <= nums_len:
        add_time_min = -1
        task_index = 0
        for i in range(nums_len):
            if i in task_seq:
                continue

            task_seq_len = len(task_seq)
            for j in range(-1, -n-1, -1):
                if -j > task_seq_len:
                    continue
                if nums[i] == nums[task_seq[j]]:
                    add_time = 1 + n + j + 1
                    break
            else:
                add_time = 1

            if add_time_min == -1 or add_time < add_time_min:
                add_time_min = add_time
                task_index = i

        min_time += add_time_min
        task_seq.append(task_index)

        task += 1

    return min_time

nums = [2, 2, 2, 3]
n = 2
result = task_optimal_solution(nums, n)
print(result)

9.高效的任务规划

题目描述:
你有 n 台机器,编号为 1~n,每台都需要完成一项工作,机器经过配置后都能独立完成一项工作。
假设第 i 台机器你需要花 Bi 分钟进行设置,然后开始运行,Ji 分钟后完成任务。
现在,你需要选择布置工作的顺序,使得用最短的时间完成所有工作。
注意,不能同时对两台进行配置,但配置完成的机器们可以同时执行他们各自的工作。

输入描述:
第一行输入代表总共有 M 组任务数据(1<M<=10)。
每组数第一行为一个整数指定机器的数量 N(0<N<=1000)。随后的 N 行每行两个整数,第一个表示 B(0<=B<=10000),第二个表示 J(0<=J<=10000)。
每组数据连续输入,不会用空行分隔。各组任务单独计时。

输出描述:
对于每组任务,输出最短完成时间。

用例1:
输入:1
1
2 2
输出:4

用例2:
输入:1
3
1 1
2 2
3 3
输出:7

"""高效的任务规划"""

def optimal_task_plan(n: list):
    """"""
    n_len = len(n)

    machine = 1
    machine_seq = []
    all_config_time = 0
    min_time = 0
    while machine <= 2:
        config_time = -1
        machine_ind = 0
        max_run_time = -1
        for i in range(n_len):
            if i in machine_seq:
                continue

            run_time = n[i][1]
            if max_run_time == -1 or run_time > max_run_time:
                max_run_time = run_time
                config_time = n[i][0]
                machine_ind = i

        machine_seq.append(machine_ind)
        all_config_time += config_time
        min_time = max(min_time, all_config_time + max_run_time)

        machine += 1

    return min_time

n = [(1, 1), (2, 2), (3, 3)]
result = optimal_task_plan(n)
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2377131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对比 HTTP-REST 与 gRPC:各自的优缺点以及适用的场景

文章目录 对比 HTTP-REST 与 gRPC&#xff1a;各自的优缺点以及适用的场景HTTP-REST 与 gRPC 的核心区别gRPC 的优缺点HTTP-REST 的优缺点适用场景 模糊点什么是 Protobuf&#xff1f;HTTP/2 会将 HTTP 消息拆分并封装为二进制帧&#xff0c;那还能过使用 HTTP/2 构建 RESTful …

Git - 1( 14000 字详解 )

一&#xff1a; Git 初识 1.1 提出问题 在工作或学习中&#xff0c;我们常常会面临文档管理的问题&#xff0c;尤其是在编写各种文档时。为了防止文档丢失或因更改失误而无法恢复&#xff0c;我们常常会创建多个版本的副本&#xff0c;例如&#xff1a;“报告-v1”、“报告-v…

TCPIP详解 卷1协议 九 广播和本地组播(IGMP 和 MLD)

9.1——广播和本地组播&#xff08;IGMP 和 MLD&#xff09; IPv4可以使用4种IP地址&#xff1a;单播&#xff08;unicast&#xff09;、任播&#xff08;anycast&#xff09;、组播&#xff08;multicast&#xff09;和广播&#xff08;broadcast&#xff09;。 IPv6可以使用…

16.1 - VDMA视频转发实验之TPG

文章目录 1 实验任务2 系统框图3 硬件设计3.1 IP核配置3.2 注意事项 4 软件设计4.1 注意事项4.2 工程源码4.2.1 main.c文件 1 实验任务 基于14.1&#xff0c;使用Xilinx TPG&#xff08;Test Pattern Generator&#xff09; IP提供视频源&#xff0c;将视频数据通过VDMA写入PS…

cocos creator 3.8 下的 2D 改动

在B站找到的系统性cocos视频教程,纯2D开发入门,链接如下: zzehz黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator JavaScript&#xff09;_哔哩哔哩_bilibili黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator Ja…

Unity光照笔记

问题 在做项目中遇到了播放中切换场景后地面阴影是纯黑的问题&#xff0c;不得不研究一下光照。先放出官方文档。 Lighting 窗口 - Unity 手册 播放中切换场景后地面阴影是纯黑 只有投到地面的阴影是纯黑的。且跳转到使用相同Terrain的场景没有问题。 相关文章&#xff1a…

嵌入式学习的第二十天-数据结构-调试+链表的一般操作

一、调试 1.一般调试 2.找段错误 二、链表的一般操作 1.单链表的修改 int ModifyLinkList(LinkList*ll,char*name,DATATYPE*data) {DATATYPE * tmp FindLinkList(ll, name);if(NULL tmp){return 1;}memcpy(tmp,data,sizeof(DATATYPE));return 0; } 2.单链表的销毁 int D…

家具制造行业的现状 质检LIMS如何赋能家具制造企业质检升级

在家具制造行业&#xff0c;从原木切割到成品出厂&#xff0c;质检环节贯穿始终 —— 木材含水率是否达标、板材甲醛释放量是否合规、涂层耐磨性能否通过标准…… 这些看似琐碎的检测项目&#xff0c;实则是企业把控产品品质、规避市场风险的核心关卡。传统人工质检模式在效率、…

idea整合maven环境配置

idea整合maven 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&#xff1a;每个知识点&#xff0c;都是写出代码…

无偿帮写毕业论文(看不懂的可以私信博主)

以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行&#xff0c;脱产学习这么多年&#xff0c;终于熬出头了&#xff0c;完成毕设后有空就去多看看亲人好友&#xff0c;祝好&#xff01; 一、找一个论文模板 废话不多说&#xff0c;先上干货Ov…

小白成长之路-vim编辑

文章目录 Vim一、命令模式二、插入模式3.a:进入插入模式&#xff0c;在当前光标的后一个字符插入![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fd293c3832ed49e2974abfbb63eeb5bb.png)4.o: 在当前光标的下一行插入5.i:在当前光标所在字符插入&#xff0c;返回命令模…

【常用算法:排序篇】7.算法魔法与面试秘籍:从趣味排序到实战通关

一、趣味排序算法&#xff1a;突破常规的思维火花 1. 睡眠排序&#xff08;Sleep Sort&#xff09;—— 时间维度的魔法 核心思想&#xff1a;利用多线程休眠时间模拟数值大小&#xff0c;自然输出有序结果。Python示例&#xff1a;import threading import timedef sleep_so…

Android | IOS — Solox性能测试

文章目录 Solox性能测试1. 前置条件2. 软件图片 Solox性能测试 1. 前置条件 安装Python:3.10.0以上版本&#xff1a; Windows&#xff1a;Python官网 安装 SoloX python -m solox2. 软件图片 软件图片 报告分析&#xff1a;

Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】

引言 在人工智能图像生成领域&#xff0c;Midjourney 凭借其强大的艺术表现力和灵活的创作模式&#xff0c;已成为设计师、艺术家和创意工作者的核心工具。作为 CSDN 博主 “小正太浩二”&#xff0c;我将结合多年实战经验&#xff0c;系统分享 Midjourney 的创作方法论&#x…

工具篇-扣子空间MCP,一键做游戏,一键成曲

一、登陆扣子空间 地址如下&#xff1a; 扣子空间 打开&#xff0c;然后登陆扣子 登陆之后快速开始&#xff1a; 二、生成游戏 小试牛刀&#xff0c;我们让它做一个打地鼠的游戏&#xff1a; 已经开始设计制作&#xff1a; 制作完成&#xff1a; 三、制作音乐 新…

5.6 - 5.9 MySQL

数据库&#xff1a;存储和管理数据的仓库DB。 数据库管理系统&#xff1a;操纵和管理数据库的大型软件DBMS。 关系型数据库 一个数据库内可以创建多张表&#xff0c;在一个表内能存放多个数据。 SQL语句&#xff1a; DDL&#xff1a; 存储字符串用varchar。&#xff08;类似于…

C# WinForm 如何高效地将大量数据从 CSV 文件导入 DataGridView

如果你有非常多的csv文件&#xff0c;每个文件包含N多行与M多列&#xff0c;如&#xff1a;18000 行和 27 列。现在&#xff0c;想制作一个 Windows 窗体应用程序&#xff0c;导入它们并在 datagridview 中显示&#xff0c;然后进行一些数学运算。可是&#xff0c;发现数据导入…

SQLPub:一个提供AI助手的免费MySQL数据库服务

给大家介绍一个免费的 MySQL 在线数据库环境&#xff1a;SQLPub。它提供了最新版本的 MySQL 服务器测试服务&#xff0c;可以方便开发者和测试人员验证数据库功能&#xff0c;也可以用于学习 MySQL。 免费申请 在浏览器中输入以下网址&#xff1a; https://sqlpub.com/ SQLP…

URP相机如何将场景渲染定帧模糊绘制

1&#xff09;URP相机如何将场景渲染定帧模糊绘制 2&#xff09;为什么Virtual Machine会随着游戏时间变大 3&#xff09;出海项目&#xff0c;打包时需要勾选ARMv7吗 4&#xff09;Unity是手动还是自动调用GC.Collect 这是第431篇UWA技术知识分享的推送&#xff0c;精选了UWA社…

WeakAuras Lua Script ICC (BarneyICC)

WeakAuras Lua Script ICC &#xff08;BarneyICC&#xff09; https://wago.io/BarneyICC/69 全量英文字符串&#xff1a; !WA:2!S33c4TXX5bQv0kobjnnMowYw2YAnDKmPnjnb4ljzl7sqcscl(YaG6HvCbxaSG7AcU76Dxis6uLlHNBIAtBtRCVM00Rnj8Y1M426ZH9XDxstsRDR)UMVCTt0DTzVhTjNASIDAU…