华为OD机试真题 Python 实现【字符串解密】【2023 B卷 100分】,附详细解题思路

news2024/11/14 10:33:30

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Python算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

一、题目描述

给定两个字符串string1和string2。

string1是一个被加扰的字符串。string1由小写英文字母(‘a’-‘z’)和数字字符(‘0’-‘9’)组成,而加扰字符串由’0’-‘9’、‘a’-'f’组成。string1里面可能包含0个或多个加扰子串,剩下可能有0个或多个有效子串,这些有效子串被加扰子串隔开。

string2是一个参考字符串,仅由小写英文字母(‘a’-‘z’)组成。

你需要在string1字符串里找到一个有效子串,这个有效子串要同时满足下面两个条件:

  1. 这个有效子串里不同字母的数量不超过且最接近于string2里不同字母的数量,即小于或等于string2里不同字母的数量的同时且最大。
  2. 这个有效子串是满足条件(1)里的所有子串(如果有多个的话)里字典序最大的一个。如果没有找到合适条件的子串的话,请输出"Not Found"

示例:

输入字符串string1为"thisisanewday111forme",输入字符串string2为"good"。string1里有效子串和加扰子串分割后可表示为:“thisis”+“a”+“n”+“e”+“w”+“da”+“y”+“111f”+“orm”+“e”,去除加扰子串(“a”、“e”、“da”、“111f”、“e”)后的有效子串候选为(“thisis”, “n”, “w”, “y”, “orm”)。

输入字符串string2里不同字母的数量为3(‘g’、‘o’、‘d’),从有效子串候选里可以找出"orm"满足要求,其不同字母的数量为3,最接近于string2不同字母的数量。

二、输入描述

输入为两个字符串,第1行是题目里的string1(被加扰的字符串),第2行是题目里的string2(参考字符串)。

三、输出描述

输出为一个字符串(有效字符串)。

四、解题思路

  1. 第一行输入一个被加扰的字符串(由小写英文字母(‘a’-‘z’)和数字字符(‘0’-‘9’)组成,而加扰字符串由’0’-‘9’、‘a’-'f’组成);
  2. 第二行输入一个参考字符串;
  3. 获取有效字符串, 这个有效子串里不同字母的数量不超过且最接近于string2里不同字母的数量;这个有效子串是满足条件(1)里的所有子串(如果有多个的话)里字典序最大的一个;
  4. 定义一个变量maxDiffCharNum,不同字符个数最接近的字符串长度;
  5. 定义一个变量maxStr,记录当前最大长度字符串;
  6. 通过正则表达式"[abcdef0123456789]",将第一行被打扰的字符串分割成有效子串;
  7. 遍历有效子串;
  8. 获取不同字符的数量;
  9. 获取数量最接近的个数;
  10. 如果有相同长度的有效子串,取字典序最大的一个;
  11. 输出符合要求的最长有效子串;

五、Python算法源码

# 被加扰的字符串,由小写英文字母('a'-'z')和数字字符('0'-'9')组成,而加扰字符串由'0'-'9'、'a'-'f'组成
string1 = input()
string2 = input()
i = 0
# 获取有效子串
validArr = []
while i < len(string1):
    if 'g' <= string1[i] <= 'z':
        lt = i
        while i < len(string1) - 1 and 'g' <= string1[i+1] <= 'z':
            i += 1
        if i == len(string1) - 1 and not 'g' <= string1[i-1] <= 'z':
            validArr.append(string1[i])
        i += 1
        validArr.append(string1[lt:i])
    else:
        i += 1
delta = 10000
length = len(set(string2))
maxStrArr = []
for s in validArr:
    cur = length - len(set(s))
    if 0 <= cur < delta:
        maxStrArr = [s]
        delta = cur
    elif cur == delta:
        maxStrArr.append(s)
    else:
        continue
maxStrArr.sort()
if not maxStrArr:
    print("Not Found")
else:
    print(maxStrArr[-1])

六、效果展示

1、输入

nezhalovejava123
java

2、输出

lov

3、说明

将输入字符串1里的加扰子串"e"、“a”、“e”、“a”、“a”、"123"去除后得到有效子串序列:“n”、“zh”、“lov”、“j”、“v”,其中"lov"里不同字母的数量为3(有’l’、‘o’、'v’三个不同字母),故输出3。

因为最近的个数字符串只有一个,故不用字典表顺序比较。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

【SCI征稿】计算机算法、通信、人工智能、网络、物联网、机器学习等领域,13本期刊影响因子上涨,这几本期刊录用快

2023年JCR发布后&#xff0c;计算机领域SCI期刊有13本影响因子上涨&#xff0c;审稿周期短&#xff0c;进展顺利&#xff1a; 1️⃣IF&#xff1a;6.0-7.0↑&#xff0c;JCR2区&#xff0c;中科院3区&#xff0c;SCI&EI 双检&#xff0c;CCF-C类 征稿领域&#xff1a;概率…

喜讯 | ShowMeBug CEO 李亚飞获评“稀土开发者”年度技术引领人物

近日&#xff0c;由稀土开发者大会举办的「掘金技术引力榜」评选活动揭晓&#xff0c;李亚飞从众多优秀的技术开发者中脱颖而出&#xff0c;获评年度技术引领人物。 稀土开发者大会年度技术引领人物获奖榜单 稀土开发者大会是由稀土掘金技术社区主办&#xff0c;集国际化前瞻…

c# opencv 找到图像的轮廓,并绘制轮廓

Mat colorMat new Mat();Mat outMat new Mat();Mat resultMat new Mat();Mat src Cv2.ImRead("I:\\mask.jpg");//转成灰度图Cv2.CvtColor(src, colorMat, ColorConversionCodes.RGB2GRAY);//对灰度图像进行阈值操作得到二值图像Cv2.Threshold(colorMat, outMat, 0…

【Python编程系列】3、初识Python代码:输入输出

1、输出 在PyCharm上新建项目和python文件后,编写一行代码,输出:"Hello World"这句话。代码为: print("Hello World")PyCharm上运行代码有两种方式,如下图1和2。代码运行结果在下方显示: print函数打印字符串时加单引号或双引号,不能混用。 单引…

大厂都在做的jmeter接口自动化测试登峰造极的JMETER实现接口自动化测试

目录 一、JMETER的环境搭建 二、JMETER的汉化 三、JMETER的接口请求 四、JMETER的参数化 五、JMETER的JSON传参 六、JMETER的断言添加 一、JMETER的环境搭建 二、JMETER的汉化 临时汉化方法&#xff1a;打开jmeter&#xff0c;options-->choose language-->选择语言…

simulink 常用子系统 核心是函数封装simulink function

目录 Enabled Subsystem Triggered Subsystem Function-call Subsystem Simulink Function Enabled Subsystem Triggered Subsystem Function-call Subsystem Simulink Function 类似c函数的封装 数组形参

ikun猛戳进来丨使用Python打造属于你的ikun音乐播放器,简直不要太好用

首先声明&#xff0c;我不是小黑子&#xff0c;我不是小黑子&#xff01; 作为一个ikun&#xff0c;时刻都在想着我们家姐姐&#xff01; 这不上次用Python做了一个ikun飞机大战&#xff0c;今天再给大家整活一手&#xff0c;Python tkinter开发一个专属ikun音乐播放器&#x…

CVPR 2023 | 掩码图像建模MIM的理解、局限与扩展

编者按&#xff1a;掩码图像建模&#xff08;Masked Image Modeling, MIM&#xff09;的提出&#xff0c;为计算机视觉模型训练引入无监督学习做出了重要贡献。得益于 MIM 的预训练算法&#xff0c;计算机视觉领域在近年来持续输出着优质的研究成果。然而整个业界对 MIM 机制的…

【Java从入门到大牛】程序流程控制

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年7月7日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e…

STM32CubeMX实现USB虚拟串口环回测试功能

STM32CubeMX实现USB虚拟串口环回测试功能 &#x1f4cd;参考ST官方给出的参考案例&#xff1a;https://www.stmcu.com.cn/Designresource/detail/LAT/711466&#x1f388;同功能配置可以参考《STM32 USB使用记录&#xff1a;使用CDC类虚拟串口&#xff08;VCP&#xff09;进行通…

MySQL系统函数

系统函数&#xff1a; 数学函数 1、abs() pi() 2、sqrt() 3、cell() floor() round() truncate() cell是向上取整&#xff0c;floor是向下取整。 注意&#xff1a;round负数和java里面的四舍五入有所不同 Round还可以指明位数 turncate是截断 4、power() …

颜色分类 (力扣)JAVA

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这…

用牛鲨NFT赚取SUI的机会,这不就来了?

很高兴向大家宣布Mysten Labs的Bullshark Quests活动&#xff0c;这是一个为Bullshark持有者提供赚取SUI奖励&#xff08;和其他福利&#xff09;的全新方式&#xff0c;Bullshark是ACES计划的一部分。Bullshark Quests将成为一个持续的活动&#xff0c;为Bullshark持有者提供通…

为什么需要多语言并行机器翻译?

随着全球化的加速和不同语言之间的交流需求不断增长&#xff0c;多语言机器翻译&#xff08;Multilingual Parallel Machine Translation&#xff09;成为一个备受关注的领域。传统上&#xff0c;机器翻译系统主要集中于一对特定语言之间的翻译&#xff0c;但这种单一语言对的模…

微服务的划分姿势分享

微服务是一种理念&#xff0c;没有确切的定义和边界&#xff0c;好比设计原则&#xff0c;是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话&#xff0c;具体问题需要具体分析。 微服务的划分矛盾在于粒度&#xff0c;如果粒度太大了&#xff0c;分和不分似乎都差…

npm 记录

转 请看原文&#xff0c;我只是怕原文没了&#xff0c;复制了一遍。我目的是想记录缓存那一块。 前端工程化 - 剖析npm的包管理机制 - 掘金 在content-v2/sha512 执行 grep -n "https://registry.npmjs.org/base64-js/-/base64-js-1.0.1.tgz" -r ./ 获取缓存包…

Java 定义返回一个不能被修改、删除元素的List

为啥突然分享下这个&#xff0c;也是从mybatis源码看到了&#xff0c;所以想分享下&#xff1a; org.apache.ibatis.plugin.InterceptorChain 使用 Collections.unmodifiableList(); 示例&#xff1a; public static void main(String[] args) {List<String> canNotEdit…

Android 曲线覆盖图

看图 样例代码 layout.xml <com.XXXXX.utils.GraphBendLineandroid:id"id/ghost_view"android:layout_width"200dp"android:layout_height"200dp"android:layout_margin"40dp"app:node_bar_line_color"#F9FEFD"app:nod…

药物设计学笔记:基础篇

笔记来自《药物设计学》 文章目录 1.药物设计的分子基础2.药物设计的理论基础 1.药物设计的分子基础 化学小分子药物与生物大分子靶标之间相互作用是药物设计的分子基础临床所用的药物50%都属于手性化合物&#xff0c;这是因为药物靶标的基本单元如氨基酸或核苷酸都是手性结构…

快来收藏这几款免费的图标设计软件!

图标素材为网站、应用程序、文档等提供简洁明了的标识&#xff0c;尽管AdobeIllustrator等付费图标设计软件功能强大&#xff0c;但是对于一些轻量级的设计要求&#xff0c;使用免费的图标设计软件是个不错的选择。本文将向大家介绍5款免费的图标设计软件&#xff0c;一起来看看…