Lazy loaded image
算法练习
记录-华为机试(一)
字数 1835阅读时长 5 分钟
2025-7-21
2025-7-24
AI智能摘要
GPT
这里是萌新AI,这篇文章介绍了华为机试中的五道算法题。作者首先列出了题目名称和基本描述,然后详细讲解了第一题“计算某字符出现次数”的两种解决方法。核心思路是统一大小写后进行统计,并提供了具体的 Python 代码示例。文章鼓励日常练习算法,并邀请读者在评论区分享更好的方法。
URL
type
status
date
slug
summary
tags
category
icon
password
😀
日常练习算法题!每天至少做一道算法题,上不封顶都会记录下来!伙伴们有好的方法可以在评论区留言!

📝 算法题

第一题:计算某字符出现次数

描述:

对于给定的由大小写字母、数字和空格混合构成的字符串s,给定字符c,按要求统计:
  • c为大写或者小写字母,统计其大小写形态出现的次数和
  • 若c为数字,统计其出现的次数。保证字符c要么为字母、要么为数字。

输入描述:

第一行输入一个长度 1≦length(s)≦10^3,由大小写字母、数字和空格构成的字符串s。保证首尾不为空格。第二行输入一个字符c,保证c为大小写字母或数字。

输出描述:

在一行上输出一个整数,代表统计结果。

解决方法:

思路:首先,将输入字符串中字母的大写转换为小写;接着,循环遍历统计目标值出现的次数。

第二题:明明的随机数

描述:

对于明明生成的n个1到500之间的随机整数,你需要帮助他完成以下任务:
删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;
然后再把这些数从小到大排序,按照排好的顺序输出。你只需要输出最终的排序结果。

输入描述:

第一行输入一个整数n(1≦n≦1000),代表明明生成的数字个数。此后n行,第i行输入一个整数a_i (1≦ai≦500),代表明明生成的随机整数。

输出描述:

输出若干行,每行输出一个整数,代表输入数据排序后的结果。第一行输出最小的数字。

解决方法:

思路:第一种-借用Python自带函数实现。set()消除重复字符,sorted()进行排序。第二种:构建函数用于获取输入目标值插入集合下标。

第三题:字符串分隔

描述:

对于给定的由小写字母和数字混合构成的字符串s,你需要按每8个字符换一行的方式书写它,具体地:
  • 书写前8个字符,换行;
  • 书写接下来的8个字符,换行;
  • ……
  • 重复上述过程,直到字符串被完全书写。特别地,如果最后一行不满8个字符,则需要在字符串末尾补充0,直到长度为8。

输入描述:

在一行上输入一个长度 1≦length(s)≦100,由小写字母和数字构成的字符串s。

输出描述:

输出若干行,每行输出8个字符,代表按题意书写的结果。

解决方法:

思路:首先,计算字符串长度,如果不是8的倍数,那么在余数的基础上填补0;接着,按照每行8个字符输出。

第四题:进制转换

描述:

对于给定的十六进制数,输出其对应的十进制表示。在本题中,十六进制数的格式为:0x开头,后跟若干个十六进制数字(保证为0-9和A-F中的一个)。其中,A-F依次代表十进制中的10∼15。

输入描述:

在一行上输入一个十六进制数s,代表待转换的十六进制数,格式见题干。保证s转化得到的十进制数x的范围为1≦x<2^31。

输出描述:

在一行上输出一个整数,代表s对应的十进制数。

解决方法:

思路:首先,创建一个字典,用于构建字母对应的数值;接着,根据16进制转10进制的方法实现代码。

第五题:质数因子

描述:

对于给定的整数n,从小到大依次输出它的全部质因子。即找到这样的质数p1,p2,⋯ ,pk,使得 n=p1×p2×⋯×pk。

输入描述:

在一行上输入一个整数n(2≦n≦2×10^9+14)代表待分解的整数。

输出描述:

在一行上从小到大输出若干个整数,代表n的质因子。

解决方法:

思路:首先,将目标值取根号(这么做的目的减少秩因子搜索范围,防止超过时间限制);接着,目标值除以秩因子,若余数为0,则输出秩因子,否则,秩因子+1;最后,判断是否还有最后一个秩因子是否未输出。
 

📎 算法题原网址

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

评论
Loading...