当前位置: 首页 > news >正文

华为OD机试真题 - 查字典 (C++ Python JAVA JS GO)

查字典

2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

题目描述

输入一个单词前缀和一个字典,输出包含该前缀的单词

输入描述

单词前缀+字典长度+字典
字典是一个有序单词数组
输入输出都是小写

输出描述

所有包含该前缀的单词,多个单词换行输出

若没有则返回-1

用例1

输入

b 3 a b c

输出

b

用例2

输入

abc 4 a ab abc abcd

输出

abc abcd

用例3

输入

a 3 b c d

输出

-1

题解

思路:模拟

  1. 这道题比较简单,之间判断词典中所有单词是有以prefix开头即可。
  2. 考虑到这道题没有限制单词的数量,如果全部存在数组中可能会超内存,可以判断一个单词以prefix开头就直接输出。至于-1的情况可以使用一个布尔值进行记录。
  3. 具体逻辑看看下面代码就ok。

c++

#include<iostream> #include<vector> #include<string> #include <utility> #include <sstream> #include<algorithm> #include<cmath> #include<map> using namespace std; int main() { string prefix; int n; cin >> prefix; cin >> n; // 标记是否找到 bool flag = false; int prefixLen = prefix.size(); for (int i = 0; i < n; i++) { string input; cin >> input; // 判断是否为前缀 if (prefix == input.substr(0, prefixLen)) { flag = true; cout << input << endl; } } // 没有找到情况下 if (!flag) { cout << -1; } return 0; }

JAVA

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String prefix = sc.next(); int n = sc.nextInt(); // 标记是否找到 boolean flag = false; int prefixLen = prefix.length(); for (int i = 0; i < n; i++) { String input = sc.next(); // 判断是否为前缀 if (input.length() >= prefixLen && prefix.equals(input.substring(0, prefixLen))) { flag = true; System.out.println(input); } } // 没有找到情况下 if (!flag) { System.out.print(-1); } } }

Python

importsys data=sys.stdin.read().split()idx=0prefix=data[idx]idx+=1n=int(data[idx])idx+=1# 标记是否找到flag=Falseprefix_len=len(prefix)for_inrange(n):s=data[idx]idx+=1# 判断是否为前缀ifs.startswith(prefix):flag=Trueprint(s)# 没有找到情况下ifnotflag:print(-1)

JavaScript

constreadline=require('readline');// 创建 readline 接口constrl=readline.createInterface({input:process.stdin,output:process.stdout});consttokens=[];// 逐行读取输入rl.on('line',(line)=>{// 按空白切分,支持空格 / 多个空格tokens.push(...line.trim().split(/\s+/));});rl.on('close',()=>{letidx=0;// 读取前缀constprefix=tokens[idx++];// 读取数量constn=parseInt(tokens[idx++],10);// 标记是否找到letflag=false;constprefixLen=prefix.length;for(leti=0;i<n;i++){consts=tokens[idx++];// 判断是否为前缀if(s.startsWith(prefix)){flag=true;console.log(s);}}// 没有找到情况下if(!flag){console.log(-1);}});

Go

packagemainimport("bufio""fmt""os")funcmain(){in:=bufio.NewReader(os.Stdin)varprefixstringvarnintfmt.Fscan(in,&prefix,&n)// 标记是否找到flag:=falseprefixLen:=len(prefix)fori:=0;i<n;i++{varsstringfmt.Fscan(in,&s)// 判断是否为前缀iflen(s)>=prefixLen&&s[:prefixLen]==prefix{flag=truefmt.Println(s)}}// 没有找到情况下if!flag{fmt.Print(-1)}}
http://www.cnnetsun.cn/news/156715.html

相关文章:

  • Labelme v5升级终极指南:3大架构革新与5步迁移策略
  • OpenCore自动化配置工具的技术实现与应用实践
  • Folo版本安全指南:从容应对升级风险的完整方案
  • 前端性能优化实战:代码分割与懒加载的深度解析
  • JUnit4测试优先级控制完全解决方案:从痛点诊断到实战精通
  • Open-AutoGLM日志加密实战指南(从入门到高阶的4种加密方案)
  • Blender布料模拟终极指南:5个技巧让角色动画更真实
  • macOS存储革命:iSCSI网络存储方案深度解析
  • 豆包大模型 1.8 正式发布!更强多模态 Agent 能力、更灵活的上下文管理
  • iOS动画开发终极指南:如何通过lottie-ios组件库重构提升开发效率
  • Windows 11界面定制终极指南:ExplorerPatcher完全配置手册
  • FFXIVQuickLauncher终极评测:为什么这款启动器能彻底改变你的最终幻想14游戏体验
  • 腾讯开源Hunyuan-1.8B高效对话模型
  • Langchain-Chatchat在客户服务知识库中的SLA保障机制
  • VibeVoice:90分钟多角色开源TTS新突破
  • D2-Net终极指南:如何用单个CNN实现联合特征检测与描述
  • ExplorerPatcher:彻底改变Windows 11界面定制的终极神器
  • Langchain-Chatchat在项目管理文档检索中的时间轴定位功能
  • iOS 16.7调试环境快速配置指南:解决Xcode设备支持库缺失问题
  • Butterfly流程图组件库终极指南:从入门到实战的深度解析
  • Lottie-web:跨平台动画渲染的终极解决方案
  • Classic Shell终极指南:重新定义你的Windows开始菜单体验
  • 5个理由告诉你为什么Carnac是键盘操作可视化的终极解决方案
  • Ring-flash-linear-2.0:高效混合架构开源大模型
  • 2024年前端UI框架智能选型:从业务场景到技术落地的完整决策框架
  • Chrono终极并行测试指南:如何实现75%的测试效率提升
  • Stockfish国际象棋引擎完全指南:为什么它是棋手的最佳免费选择?
  • 5分钟掌握egui:Rust生态中最简单的图形界面开发方案
  • 智能家居平台大比拼:哪款更适合你的生活场景?
  • 腾讯开源libpag动画渲染库4.4.29版本发布:终极跨平台动画性能优化指南