Lazy loaded image
算法练习
记录-华为机试(二)
字数 1791阅读时长 5 分钟
2025-7-24
2025-7-25
AI智能摘要
GPT
这里是萌新AI,这篇文章介绍了华为机试中的五道算法题,包括合并表记录、提取不重复的整数、字符个数统计、数字颠倒和字符串排序。作者以第一题为例,详细说明了问题描述、输入输出格式和解决方法,利用 Python 字典实现索引合并与排序,并鼓励读者每日练习算法,在评论区分享心得。
URL
type
status
date
slug
summary
tags
category
icon
password
😀
日常练习算法题!每天至少做一道算法题,上不封顶都会记录下来!伙伴们有好的方法可以在评论区留言!

📝 算法题

第一题:合并表记录

描述:

数据表中,一条记录包含表索引和数值两个值。请对表索引相同的记录进行合并(即将相同索引的数值进行求和运算),随后按照索引值的大小从小到大依次输出。

输入描述:

第一行输入一个整数 n(1≦n≦500)代表数据表的记录数。此后n行,第i行输入两个整数 xi,yi(0≦xi≦11 111 111; 1≦yi≦10^5)) 代表数据表的第i条记录的索引和数值。

输出描述:

一共若干行(视输入数据变化),第i行输出两个整数,代表合并后数据表中第i条记录的索引和数值。

解决方法:

思路:首先,借用Python字典思想,创建Python字典,将索引作为Key值,数值作为Value值;接着,通过Key值判断字典中是否存在,如果存在则在Value值上进行Sum,否则,Update;最后,字典通过sorted进行排序。

第二题:提取不重复的整数

描述:

对于给定的正整数n,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。具体地,如果遇到相同数字,保留在最右侧出现的第一个数字。

输入描述:

在一行上输入一个整数n(1≦n≦108)代表给定的整数。保证n的最后一位不为0。

输出描述:

在一行上输出一个整数,代表处理后的数字。

解决方法:

思路:首先,整数除以10取余数,余数便对印着个位,十位,百位…等;接着,通过字符串拼接,将这些值倒序拼接;最后,输出。

第三题:字符个数统计

描述:

对于给定的字符串,统计其中的ASCII码在0到127范围内的不同字符的个数。备注:受限于输入,本题实际输入字符集为ASCII码在33到126范围内的可见字符。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。

输入描述:

输入一个长度 1≦length(s)≦500,仅由图片中的可见字符构成的字符串s。

输出描述:

在一行上输出一个整数,代表给定字符串中ASCII码在0到127范围内的不同字符的个数。

解决方法:

思路:首先,可以通过set()集合消除重复值或者通过循环和List联合判断;接着,借用ord()函数将字符转换为ASCII码;再接着,判断区间,如果在区间+1或者append(),否则continue。

第四题:数字颠倒

描述:

对于给定的非负整数n,将其以字符串的形式颠倒后输出。这意味着,如果n的末尾含0,那么返回的字符串开头也需要含0。

输入描述:

在一行上输入一个非负整数n(0≦n<230)代表给定的整数。

输出描述:

在一行上输出一个字符串,代表颠倒后的数字。

解决方法:

思路:两种方法:第一种:Python序列本身自带的特性反转序列直接实现。eg:a[::-1];第二种:首先,将字符串转换为集合,从集合中间向两端出发,交换数据的位置;最后,将List拼接为字符串。

第五题:字符串排序

描述:

对于给定的由大小写字母混合构成的n个单词,输出按字典序从小到大排序后的结果。
【名词解释】
从字符串的第一个字符开始逐个比较,直至发现第一个不同的位置,比较这个位置字符的Ascii码,Ascii码较小(‘A’<‘B’⋯<‘Z’<‘a’<⋯<‘z’)的字符串字典序也较小。

输入描述:

第一行输入一个整数n(1≦n≦103)代表给定的单词个数。此后n行,每行输入一个长度
1≦length(s)≦100,由大小写字母构成的字符串s,代表一个单词。

输出描述:

一共n行,每行输出一个字符串,代表排序后的结果。第一行输出字典序最小的单词。

解决方法:

思路:两种方法:第一种:通过Python自带的排序sorted()函数进行排序。第二种:构建函数用于获取输入目标值插入集合下标(思想与华为机试(一)的第二题一样)。

📎 算法题原网址

 
💡
以上便是今天的算法练习,如果伙伴们有好的方法,可以在下方评论区留下你们的方法!
上一篇
记录-华为机试(一)
下一篇
记录-华为机试(三)

评论
Loading...