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()函数进行排序。第二种:构建函数用于获取输入目标值插入集合下标(思想与华为机试(一)的第二题一样)。
📎 算法题原网址
以上便是今天的算法练习,如果伙伴们有好的方法,可以在下方评论区留下你们的方法!
- 作者:不爱吃香菜的萌新
- 链接:https://hexo.levsongsw.com//algorithm/huaweial2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



