AI智能摘要
GPT
这里是萌新AI,这篇文章介绍了华为机试中的三道算法题。首先,作者讲解了字符串加解密的规则,包括字母大小写转换和数字循环处理,并提供了 Python 实现思路。接着,简要提及了字符串合并处理和单词倒排两题,但未展开细节。整体上,文章结构清晰,以问题描述和解决方法为主,帮助读者快速掌握机试常见题型。
URL
type
status
date
slug
summary
tags
category
icon
password
日常练习算法题!每天至少做一道算法题,上不封顶都会记录下来!伙伴们有好的方法可以在评论区留言!
📝 算法题
第一题:字符串加解密
描述:
规定这样一种密码的加密方法:
- 对于密码中的英文字母,按照字母表顺序,向后移动一位,同时改变大小写,即Z转换为a,A转换为b,B转换为c,⋯⋯ ,Y转换为z,Z转换为a。
- 对于密码中的数字,增加1,9转换为0。字符串的解密方法即为加密方法的逆过程。现在,对于给定的明文字符串s,将其加密;对于给定的密文字符串t,将其解密。
输入描述:
第一行输入一个长度为 1≦length(s)≦103的字符串s,代表给定的明文字符串;第二行输入一个长度为1≦length(t)≦103的字符串t,代表给定的密文字符串。除此之外,保证字符串s和t中仅包含英文字母和数字。
输出描述:
第一行输出一个字符串,代表加密后的s。第二行输出一个字符串,代表解密后的t。
解决方法:
思路:首先,利用Python自带函数,将字符串中的字母大小写相互转换;接着,遍历字符串,按照要求进行修改字符串;最后,输出字符串。
第二题:字符串合并处理
描述:
对于给定的由大小写字母和数字构成的字符串s和t,记下标从1开始。按以下两个阶段进行处理:【合并阶段】
- 第一步,将s和t合并,形成一个新字符串u。
- 第二步,将u中奇数位字符按Asci码从小到大(‘A’<‘B’⋯<‘Z’<‘a’<⋯<‘z’)进行排序,随后将偶数位字符也按Asci码从小到大进行排序,得到u。
【调整阶段】随后,从左到右遍历u中的每一个字符ui:
- 第一步,若ui不是合法十六进制字符(即不为 0-9、a-f、A-F),则保留原字符,直接追加到结果中;否则,将其转换为十进制数。
- 第二步,将该十进制数转换为四位二进制数(高位不足补0,例如 (5)_10=(0101)_2);
- 第三步,将该二进制数翻转(反过来书写);
- 第四步,将该二进制数转换为大写的十六进制数,追加到结果中。最终输出上述拼接而成的字符串。
输入描述:
在一行上输入两个长度 1≦length(s),length(t)≦100,由大小写字母和数字构成的字符串s和t,代表待处理的字符串。
输出描述:
输出处理后的最终字符串。
解决方法:
思路:首先,按照要求处理排序;接着,按照要求处理进制转换;最后,输出目标字符串。
第三题:单词倒排
描述:
对于给定的若干个单词组成的句子,每个单词均由大小写字母构成,单词间使用非字母字符分隔。输出以单词为单位逆序排放的结果,即仅逆序单词间的相对顺序,不改变单词内部的字母顺序。特别地,在输出结果中,去除原有的分隔符,转而使用单个空格间隔单词。
输入描述:
在一行上输入若干个字符串,每个字符串长度为 1≦length(s)≦20,仅由大小写字母构成,代表一个单词。单词间还夹杂了一定数量的非字母字符(但保证是可见字符),代表分隔符。除此之外,保证总字符长度不超过104。
输出描述:
在一行上输出一个句子,代表以单词为单位逆序排放的结果。单词间使用单个空格分隔。
解决方法:
思路:通过正则表达式,获取非字母的字符,并将其转换为空格。
📎 算法题原网址
以上便是今天的算法练习,如果伙伴们有好的方法,可以在下方评论区留下你们的方法!
- 作者:不爱吃香菜的萌新
- 链接:https://hexo.levsongsw.com//algorithm/huaweial7
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



