华为OD机试真题1-10.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### 华为OD机试真题1-10知识点总结 #### 1. IPV4地址转换成整数 - **背景介绍**: - 在计算机网络中,IPV4地址通常采用点分十进制表示法,即用四个十进制数表示,每个数之间用点分隔。 - 本题将这种表示方式转换为一个32位整数,方便进行后续的数据处理或存储。 - **题目要求**: - 将字符串形式的IPv4地址转换为一个32位整数。 - 第一小节范围为1~128,其他小节范围为0~255。 - 若地址格式非法,则输出“invalid IP”。 - **技术要点**: - 使用`split()`方法将IPv4地址字符串按照特定分隔符分割为数组。 - 验证每个分段是否符合规定范围。 - 使用位移运算符`<<`将各个分段转换为32位整数。 - 对于不符合规定的地址,直接输出“invalid IP”。 - **实现步骤**: 1. 读取输入的IPv4地址字符串并将其按照“#”分隔。 2. 验证每个分段是否在规定的范围内。 3. 如果所有分段都合法,则计算每个分段对应的32位整数值,并将它们组合成最终的整数结果。 4. 如果有分段不合法,则输出“invalid IP”。 - **示例解析**: - 输入:“100#101#1#5” - 输出:1684340997 - 解释:根据规则,“100#101#1#5”对应的32位整数为1684340997(0x64650105)。 #### 2. 素数之积 - **背景介绍**: - 素数是指仅能被1和自身整除的大于1的自然数。 - 本题旨在找出一个32位正整数能否表示为两个素数的乘积。 - **题目要求**: - 给定一个32位正整数,分解它是否为两个素数的乘积。 - 如果成功找到,输出这两个素数;否则输出“-1 -1”。 - **技术要点**: - 素数判定:一个数除了1和自身外没有其他因数。 - 因数分解:找出给定数字的所有因数。 - 如果因数个数恰好为2,且这两个因数都是素数,则找到了符合条件的两个素数。 - **实现步骤**: 1. 读取输入的32位正整数。 2. 通过遍历的方式找出所有可能的因数。 3. 对于每个因数,验证其是否为素数。 4. 如果找到的因数个数恰好为2,则输出这两个因数;否则输出“-1 -1”。 - **示例解析**: - 输入:15 - 输出:3 5 - 解释:15可以分解为3和5的乘积,且3和5均为素数。 #### 3. 寻找相同子串 - **背景介绍**: - 字符串匹配问题是在计算机科学中的一个常见问题。 - 本题旨在找到一个字符串t中的一个连续子串与另一个字符串p相等。 - **题目要求**: - 给定两个字符串t和p,找到t中与p相等的一个连续子串,并输出该子串的起始索引。 - t的长度不超过1000000,p的长度不超过10000。 - **技术要点**: - 字符串匹配算法:KMP算法、Rabin-Karp算法等。 - 循环遍历t字符串,使用滑动窗口的方法比较t和p。 - **实现步骤**: 1. 读取输入的两个字符串t和p。 2. 使用滑动窗口的方法,依次将p与t中的每个连续子串比较。 3. 当找到一个与p完全匹配的子串时,记录该子串在t中的起始位置。 4. 输出该位置。 - **示例解析**: - 输入: - t: “hello world” - p: “world” - 输出:6 - 解释:字符串“world”出现在字符串“hello world”的第6个位置。 以上是对华为OD机试真题1-10中三个题目所涉及知识点的详细解析。
剩余14页未读,继续阅读
- 粉丝: 802
- 资源: 2940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助