
华为OD机试 2024E卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
输入一个单词前缀和一个字典,输出包含该前缀的单词。
二、输入描述
单词前缀+字典长度+字典。
字典是一个有序单词数组。
输入输出都是小写。
三、输出描述
所有包含该前缀的单词,多个单词换行输出。
若没有则返回-1。
四、测试用例
1、输入
nezha 5 nezh nezha nezhastudy study nazhajava
2、输出
nezha
 nezhastudy
五、解题思路
输出包含该前缀的单词需要满足两个条件:
1、单词前缀长度 <= 字典长度
2、字典包含该前缀的单词
若没有则返回-1。
这道题简直就是送分题,送分题一定不能出错。
六、Python算法源码
def main():
    sc = input().split()
    word = sc[0]  # 读取前缀
    length = int(sc[1])  # 读取单词数量
    flag = False
    # 遍历所有输入单词
    for i in range(2, 2 + length):
        dictionary = sc[i]
        # 单词前缀长度 <= 字典长度
        if len(word) <= len(dictionary):
            # 字典包含该前缀的单词
            if dictionary[:len(word)] == word:
                print(dictionary)
                flag = True
    # 若没有匹配到则返回 -1
    if not flag:
        print(-1)
if __name__ == "__main__":
    main()
 
七、JavaScript算法源码
function main() {
    const input = prompt("Enter input:").split(' ');
    const word = input[0];  // 读取前缀
    const length = parseInt(input[1]);  // 读取单词数量
    let flag = false;
    // 遍历所有输入单词
    for (let i = 2; i < 2 + length; i++) {
        const dictionary = input[i];
        // 单词前缀长度 <= 字典长度
        if (word.length <= dictionary.length) {
            // 字典包含该前缀的单词
            if (dictionary.substring(0, word.length) === word) {
                console.log(dictionary);
                flag = true;
            }
        }
    }
    // 若没有匹配到则返回 -1
    if (!flag) {
        console.log(-1);
    }
}
main();
 
八、C算法源码
#include <stdio.h>
#include <string.h>
int main() {
    char word[101];
    int length;
    scanf("%s %d", word, &length);
    int flag = 0;  // 字典是否包含该前缀的单词
    // 遍历所有输入单词
    for (int i = 0; i < length; i++) {
        char dictionary[101];
        scanf("%s", dictionary);
        // 单词前缀长度 <= 字典长度
        if (strlen(word) <= strlen(dictionary)) {
            // 字典包含该前缀的单词
            if (strncmp(dictionary, word, strlen(word)) == 0) {
                printf("%s\n", dictionary);
                flag = 1;
            }
        }
    }
    // 若没有匹配到则返回 -1
    if (!flag) {
        printf("-1\n");
    }
    return 0;
}
 
九、C++算法源码
#include <iostream>
#include <string>
using namespace std;
int main() {
    string word;
    int length;
    cin >> word >> length;
    bool flag = false;  // 字典是否包含该前缀的单词
    // 遍历所有输入单词
    for (int i = 0; i < length; i++) {
        string dictionary;
        cin >> dictionary;
        // 单词前缀长度 <= 字典长度
        if (word.length() <= dictionary.length()) {
            // 字典包含该前缀的单词
            if (dictionary.substr(0, word.length()) == word) {
                cout << dictionary << endl;
                flag = true;
            }
        }
    }
    // 若没有匹配到则返回 -1
    if (!flag) {
        cout << -1 << endl;
    }
    return 0;
}
 
🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2024 E卷 200分)
🏆本文收录于,华为OD机试真题(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。


















