华为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在线答疑。