news 2026/2/9 23:07:18

(新卷,200分)- 查字典(Java JS Python C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,200分)- 查字典(Java JS Python C)

(新卷,200分)- 查字典(Java & JS & Python & C)

题目描述

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

输入描述

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

输出描述

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

若没有则返回-1

用例
输入b 3 a b c
输出b
说明
输入abc 4 a ab abc abcd
输出

abc

abcd

说明
输入a 3 b c d
输出-1
说明
题目解析

这题200分的,但是感觉很简单,难道有坑?

我感觉这题就是考察字符串的基本操作,一个startsWith方法。

Java解法中,考虑大数量级,输入处理不使用next,nextInt获取,而是用nextLine整行获取。


仅仅用startsWith方法通过率只有80%,

有考友反馈是没有判断word和prefix的长度关系,即当word.length < prefix.length,则不需要进行startsWith判断。

但是startsWith底层其实是优先做了这个判断的,比如Java源码中:

因此,判断如果使用了startsWith,则判断word.length < prefix.length是冗余的。

本题的问题应该是,我将输入获取的内容存储起来,然后传入了核心代码getResult中,因此可能超出了内存限制。

这题我们应该边获取输入,边判断,这样才是内存最优的。

JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { const tmp = line.split(" "); const prefix = tmp[0]; let find = false; const n = parseInt(tmp[1]); for (let i = 0; i < n; i++) { const word = tmp[i + 2]; if (word.startsWith(prefix)) { find = true; console.log(word); } } if (!find) console.log(-1); });
Java算法源码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String prefix = sc.next(); boolean find = false; int n = sc.nextInt(); for (int i = 0; i < n; i++) { String word = sc.next(); if (word.startsWith(prefix)) { find = true; System.out.println(word); } } if (!find) System.out.println(-1); } }
Python算法源码
# 输入获取 tmp = input().split() prefix = tmp[0] n = int(tmp[1]) find = False for i in range(n): word = tmp[i+2] if word.startswith(prefix): find = True print(word) if not find: print(-1)
C算法源码
#include <stdio.h> #include <string.h> #define MAX_LEN 1000 int main() { char prefix[MAX_LEN]; scanf("%s", prefix); int n; scanf("%d", &n); int isFind = 0; for(int i=0; i<n; i++) { char word[MAX_LEN]; scanf("%s", word); if(strncmp(prefix, word, strlen(prefix)) == 0) { isFind = 1; puts(word); } } if(!isFind) { puts("-1"); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 20:20:17

河北石家庄/山东济南/天津商场美陈氛围升级设计公司【力荐】

在华北的商业图景中&#xff0c;商场正逐渐成为连接地域文化与当代生活的视觉载体。石家庄的质朴、济南的泉韵、天津的多元——三座城市的空间美学呈现出不同的文化肌理&#xff0c;也共同面对着商业氛围如何与城市气质相融的当代命题。肆墨设计顾问有限公司 肆墨设计是一家从事…

作者头像 李华
网站建设 2026/2/7 1:50:00

强烈安利!本科生必用10款一键生成论文工具测评

强烈安利&#xff01;本科生必用10款一键生成论文工具测评 学术写作工具测评&#xff1a;为什么你需要这份2026榜单 在当前高校学术环境日益复杂的背景下&#xff0c;本科生的论文写作任务不仅数量增加&#xff0c;对质量与规范的要求也不断提升。面对选题困难、文献整理繁琐、…

作者头像 李华
网站建设 2026/2/6 21:48:20

B 树 vs B+ 树:为什么 MySQL 用 B+ 树,而不是 B 树?

&#x1f333; B 树 vs B 树&#xff1a;为什么 MySQL 用 B 树&#xff0c;而不是 B 树&#xff1f;B 树不是 B 树的“升级版”&#xff0c;而是为“范围查询”而生的专用结构。如果你学过数据结构&#xff0c;一定听说过 B 树&#xff08;B-Tree&#xff09;&#xff1b; 如果…

作者头像 李华
网站建设 2026/2/7 0:55:24

BLE 蓝牙开发入门:用手机控制开发板 LED

&#x1f4f1; BLE 蓝牙开发入门&#xff1a;用手机控制开发板 LED学 BLE&#xff0c;不从点灯开始&#xff0c;等于白学。 这一篇&#xff0c;我们用最经典、成功率最高的 BLE Demo&#xff1a; 手机 → 蓝牙 → 单片机 → 控制 LED 帮你真正入门 BLE&#xff0c;而不是只停留…

作者头像 李华
网站建设 2026/2/7 20:18:56

MySQL + MQ 最终一致性终极方案:Outbox + 幂等 + 补偿 + 对账全解析

适用对象:后端架构师 / 高级开发 / 分布式系统设计者 适用场景:订单系统、支付系统、库存系统、账户系统、积分系统、异步解耦系统 MQ 示例:RocketMQ(Kafka、Pulsar 原理一致) 一、问题背景:为什么分布式系统一定会“不一致”? 在微服务架构中,最常见的模式是: 业务服…

作者头像 李华