题目描述
输入一个单词前缀和一个字典,输出包含该前缀的单词
输入描述
单词前缀+字典长度+字典
字典是一个有序单词数组
输入输出都是小写
输出描述
所有包含该前缀的单词,多个单词换行输出
若没有则返回-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整行获取。
2023.07.29
仅仅用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;
}
免责声明:
1、IT资源小站为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和IT资源小站的同意
7、IT资源小站管理员和版主有权不事先通知发贴者而删除本文
评论0