华为OD机考题目(自动化测试)

2023-11-04

1.求第k长的字串的长度

描述

一个字符串只包含大写字母,求其连续相同字母子串中,长度第K长的子串长度,相同字母只取
最长那个子串。
例:AAAAHHHBBCDHHHH
K=3
输出:2

代码(python)

def test_007(k, target_str):
    print(f"输入的字符串是:{target_str}",end="")
    # 以字符串中的字母创建一个字典
    print("")
    dict_1 = {}
    for i in target_str:
        if i not in dict_1.keys():
            dict_1[i] = 0
    index = 0
    count = 0
    max_index = len(target_str) - 1
    # 临时变量a 初始值为字符串的第一个字母
    a = target_str[0]
    # 遍历字符串
    while index <= max_index:
        # 若字母相等,长度加1
        if a == target_str[index]:
            count += 1
        # 若不同,表示是下一个字串,
        # 记录当前字串的长度
        # 更新临时变量a,记录下一个
        else:
            if dict_1[a] < count:
                dict_1[a] = count
            count = 1
            a = target_str[index]
        index += 1
    # 上述代码只在else保存的时前一个字串的长度,
    # 在index=max_index时会出现计数未保存的情况
    # 1. 若n-1和n位置的字母相同,不会将更新的count加到字典
    # 2. 若n-1和n位置的字母不相同,不会将新字串的长度加到字典
    # 所以在最后加一次处理操作
    if dict_1[a] < count:
        dict_1[a] = count
    # for i, j in dict_1.items():
    #     print(i, j)
    # 利用set去重(不同字母构成的字串长度相同)然后转成list升序排序,题目答案是步不去重的结果
    # 最后输出k-1位置的值
    # out_list = sorted(list(set(dict_1.values())))
    out_list = sorted(dict_1.values())
    if k > len(out_list):
        print(f"k={k}大于字符串的子串长度大小构成的list的长度{len(out_list)}",end="")
    else:
        print(f"输入k={k},第{k}长的子串的长度是{out_list[k-1]}")

运行结果
在这里插入图片描述

2.上N阶台阶问题

描述

上台阶,一个阶梯有N阶台阶,每次只能上1步或者3步,求一共有多少种不同的方式上台阶?
例:N=50
输出:122106097

思路

动态规划:
假设上N阶台阶的方式有F(n)种,我们从后往前思考,最后一次上台阶的方式只能为1步或者3步,
那么倒数第二次的处于的台阶就是n-1阶或者n-3阶,所以完成n阶台阶的总组合数就可以转换成
F(n)=F(n-1)+F(n-3),依次往前推,可以等到F(6)=F(5)-F(3),F(5)=F(4)-F(2),F(4) = F(3) + F(1),
可以观察到规律,当n大于等于6的时候,等式右边的值就可以在之前的等式找到,所以我们只
需先手动计算基础项的值,F(1)= 1,F(2) =1,F(3)=2,就可以由前面的等式得到后面等式需要的值。

代码(python)

# 非递归代码实现,n大于等于4的时候可以用F(n)=F(n-1)+F(n-3)
def test_004(n):
    if n <= 2:
        return 1
    elif n == 3:
        return 2
    else:
        # 用来存放a值,因为a的更替存在跨度问题,所以用一个长度为2的list维护
        temp_a_list = [1, 1]
        a, b, sum1 = 2, 1, 0
        while n > 3:
            sum1 = a + b
            temp_a_list[0], temp_a_list[1] = temp_a_list[1], a
            b = temp_a_list[0]
            a = sum1
            n -= 1
    return sum1
# 递归实现 但是执行时间会很长
def test_0041(n):
    if n <= 2:
        return 1
    elif n == 3:
        return 2
    else:
        return test_0041(n-1)+test_0041(n-3)

运行截图
运行结果

3.踢出石子问题

描述

有一堆石子,一次编号1-100围成圈,给定一个数K,从1开始数K个,将此石子踢出,继续报
数,最后当石子总数小于K时,输出最后剩余石子编号。
例:K为3
输出:58,91

思路和代码(python)

def test_002(n):
    list_1 = [x for x in range(1, 101)]
    max_index = len(list_1) - 1
    index = 0  # 序列index
    count = 0  # 记录被踢出人的个数
    num_n = 0  # 记录报数
    # 循环退出条件,踢出(100 - n - 1)个人
    while count < 98:
        # 1.循环列表找到值不是-1的,报数值加1(-1的表示已经踢出)
        # 2.当报数num_n=n时,表示找到了踢出的人,设置计数count_n=0,退出循环
        # 3.将此时的list_1[index]赋值为-1,表示踢出
        # 4.重复1-3,直到count == (101-n)退出外层循环
        while True:
            # 当index 大于maxindex 表示需要从头开始计数了
            if index > max_index:
                index = 0
            # 找到值不是-1的就报数(-1表示以被踢出的),否则报数直接index增加
            if list_1[index] != -1:
                num_n += 1
            if num_n == n:
                num_n = 0
                break
            index += 1
        count += 1
        # print(f"第{count}次,踢出{list_1[index]}")
        list_1[index] = -1
    print("处理完毕!")
    for item in list_1:
        if item != -1:
            print(item, end=" ")

运行结果
运行截图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD机考题目(自动化测试) 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • Linux 系统安全如何设定 log 日志记录服务器

    在网上越来越多的黑客的出现 越来越多的高手出现的情况下 如何才能确保自己可以保存一份完整的 log 呢 稍微有点概念的黑客都知道 进入系统后的第一见事情就是去清理 log 而发现入侵的最简单最直接的方法就是去看系统纪录文件 现在我们来说说如
  • 虚拟机防火墙

    查看防火墙和开通端口 查看防火状态 systemctl status firewalld service iptables status 暂时关闭防火墙 systemctl stop firewalld service iptables s
  • Ubuntu进入root用户模式

    root 用户给予你完全控制系统的能力 它可以做任何事以及使用系统的一切东西 它可以在你的 Linux 系统上访问任何文件和运行任何命令 因此 它应该被谨慎地使用 所以Ubuntu默认锁定root用户 当我们想进行一些特殊任务时需要用到ro
  • Kotlin Flow 冷流和热流

    本文主要分析了冷流 和 热流 的相关实现原理 原理逻辑长而复杂 特别是涉及热流 SharedFlow 相关实现原理时 逻辑更是抽象 理解比较困难 本文比较长 建议根据目录选择分段阅读 可以先看基础概念和冷流 再分别看热流 SharedFlo
  • 区块链学习笔记(四)——Proof of Work

    区块链学习笔记 四 Proof of Work 前言 一 PoW是什么 二 要点 1 比特币的构成 2 PoW的优缺点 三 为什么是乌托邦式的共识 前言 我们常说的共享机制有Pow PoS DPoS 而区块链采用的是谁获胜谁获奖的原则 即工
  • 遥感+python 1.5 重投影

    遥感 python 1 5 重投影 目录 遥感 python 1 5 重投影 一 重投影概念 二 代码实现 2 1 读取影像 2 2 输出影像 2 3 坐标转换 本章节 笔者主要讲述重投影的概念 原理 即代码实现 一 重投影概念 当考虑两幅
  • selector xmlns:android=“http://schemas.android.com/apk/res/android

  • Windows10 下安装mmdetection 问题之“cannot import name ‘deform_conv_cuda‘”

    最近在使用mmdetection工具箱 官方只给出Linux系统下的安装方法 自己尝试在Windows10下的安装 其中遇到过一些问题 在此记录下来 希望给小伙伴一些帮助 安装环境 VS2015 CUDA 9 0 Pytorch 1 1 t
  • centos系统ACFS-9459: ADVM/ACFS is not supported

    centos6 3系统发现acfs和advm无法使用 ASMCA图形界面的acfs和volume选项卡为灰色 这是由于acfs不支持centos系统导致的 Last login Thu Dec 14 09 33 10 2017 from 1
  • cuda Sample 功能分析(1-st 记) 0_Introduction 之 asyncAPI

    源码链接 https github com NVIDIA cuda samples blob v11 8 Samples 0 Introduction asyncAPI asyncAPI cu 首先 这个sample不是演示async co
  • C++:rand()函数和srand()函数解读

    1 srand unsigned int t 这个是设定种子 因为电脑取随机数是伪随机 只要种子一样 则取出来的数一定一样 这里用time 0 这个内函数 copy则是返回了当前的时间值 这个值是按照时间而变化的 所以 srand unsi
  • java中实现多态的机制是什么_java多态机制是什么

    java多态机制是什么 java中实现多态的机制是依靠父类或接口的引用指向子类 从而实现了一个对象多种形态的特性 其中父类的引用是在程序运行时动态的指向具体的实例 调用该引用的方法时 不是根据引用变量的类型中定义的方法来运行 而是根据具体的
  • 专治疑难系列 - 解决Ubuntu忘记root密码问题

    博客主页 Passerby Wang的博客 CSDN博客 系统运维 云计算 Linux基础领域博主 所属专栏 专治疑难系列 上期文章 专治疑难系列 解决win11中xbox开机自启问题 如觉得博主文章写的不错或对你有所帮助的话 还望大家多多
  • python多线程获取百度搜索(5.26更新)

    1 网站 输入搜索内容 获取搜索结果 进行保存 把内容整理后保存到mysql数据库 保存字段 关键字 标题 真实网址 简介 原网站名称 2 爬取结果 3 编写爬虫 爬虫使用scrapy框架编写 分布式 多线程 编写Items class B
  • Win10做系统,你自己就可以完成,不要再让别人帮你做系统啦(保姆级教学,手把手带你一步一步走!!!)你不会还不会做系统吧??快来看一看呀~

    我在这里把win10系统网址给大家放在这里啦 下载 Windows 10 microsoft com 然后下载下来之后 大家准备一个16G以上的空U盘 然后打开我们下载的这个文件 然后大家选择对应的U盘就可以啦 我的电脑是DELL 所以我就
  • 对于web代码基础了解

    快捷方式 1 基本骨架 shift 2 备注 ctrl 基本代码 1 段落标签 p p 2 换行标签 3 水平线标签 hr 4 加粗 strong strong 5 倾斜 em em 和 i i 6 容器 独占一行 div div 7 容器
  • Functions___CH_12

    12 1 Function Pointers Pointers to functions The syntax for creating a non const function pointer is one of the ugliest
  • 历时6个月, 非CS专业的我, 终于在毕业前拿到了谷歌软件工程师offer!

    本文作者 Isabel 本科就读于上海财经 研究生就读于CMU information management相关专业 在来Offer的帮助下成功 转码 入职谷歌 就在离毕业还有一个多月的时候 我收到了来自谷歌的offer 至此 心中的一块大
  • 机器视觉、目标检测常见应用场景

    机器视觉 目标检测常见应用场景 人脸人体检测 智能美肤 在保持皮肤质感的同时 自动对脸部进行匀肤 去瑕疵 痘 痘印 雀斑等 操作 并对全身皮肤进行美白 智能瘦脸 系统自动检测并分析人脸五官特征 生成脸部五官调整瘦脸后的图像 图像人脸融合 图
  • 华为OD机考题目(自动化测试)

    目次 1 求第k长的字串的长度 2 上N阶台阶问题 3 踢出石子问题 1 求第k长的字串的长度 描述 一个字符串只包含大写字母 求其连续相同字母子串中 长度第K长的子串长度 相同字母只取 最长那个子串 例 AAAAHHHBBCDHHHH K