本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

请编写程序,利用前缀树查找给定字符串是否在某给定字符串集合 S 中。

输入格式:
输入首先给出一个正整数 n(≤1000),随后 n 行,每行给出一个仅由小写英文字母组成、长度不超过 1000 的字符串,以回车结尾。以上为给定字符串集合 S。
接下来给出查询请求。首先给出一个正整数 m(≤1000),随后 m 行,每行给出一个仅由小写英文字母组成、长度不超过 1000 的待查找字符串,以回车结尾。

输出格式:
对每个待查找的字符串,如果它在 S 中,则在一行中输出 yes;否则输出 no。

输入样例:
3
binarytree
trie
binarysearch
5
binary
trie
tree
binarytree
binarysearch

输出样例:
no
yes
no
yes
yes

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_N 10000
#define MAX_LENGTH 10001// 字符串比较函数,用于qsort
int compare(const void *a, const void *b) {return strcmp(*(const char **)a, *(const char **)b);
}// 二分查找函数
int binary_search(const char **arr, int n, const char *target) {int left = 0, right = n - 1;while (left <= right) {int mid = left + (right - left) / 2;int cmp = strcmp(arr[mid], target);if (cmp == 0) {return 1; // 找到目标字符串} else if (cmp < 0) {left = mid + 1;} else {right = mid - 1;}}return 0; // 未找到目标字符串
}int main() {int n, m;char **S = (char **)malloc(MAX_N * sizeof(char *));// 读取集合 Sscanf("%d", &n);getchar(); // 消耗掉scanf后的换行符for (int i = 0; i < n; i++) {S[i] = (char *)malloc(MAX_LENGTH * sizeof(char));fgets(S[i], MAX_LENGTH, stdin);// 移除换行符size_t len = strlen(S[i]);if (len > 0 && S[i][len - 1] == '\n') {S[i][len - 1] = '\0';}}// 对集合 S 进行排序,以便使用二分查找qsort(S, n, sizeof(char *), compare);// 处理查询scanf("%d", &m);getchar(); // 消耗掉scanf后的换行符for (int i = 0; i < m; i++) {char query[MAX_LENGTH];fgets(query, MAX_LENGTH, stdin);// 移除换行符size_t len = strlen(query);if (len > 0 && query[len - 1] == '\n') {query[len - 1] = '\0';}// 使用二分查找判断查询字符串是否存在于集合 S 中if (binary_search(S, n, query)) {printf("yes\n");} else {printf("no\n");}}return 0;
}    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914907.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914907.shtml
英文地址,请注明出处:http://en.pswp.cn/news/914907.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA面试宝典 -《缓存架构:穿透 / 雪崩 / 击穿解决方案》

&#x1f4a5;《缓存架构&#xff1a;穿透 / 雪崩 / 击穿解决方案》 文章目录&#x1f4a5;《缓存架构&#xff1a;穿透 / 雪崩 / 击穿解决方案》&#x1f9ed; 一、开篇导语&#xff1a;为什么缓存是高并发系统的命脉&#xff1f;✅1.1 缓存的核心价值缓存带来的收益​​&…

FPGA创意项目网页或博客推荐

1. 综合项目平台(开源+教程) ① Hackster.io - FPGA专区 🔗 https://www.hackster.io/fpga 特点: 大量基于FPGA的创意项目(如Zynq游戏机、视觉处理、机器人控制)。 提供完整教程(Vivado工程文件+代码)。 推荐项目: FPGA-Based Oscilloscope(低成本示波器) V…

Go 程序无法使用 /etc/resolv.conf 的 DNS 配置排查记录

在最近的一次部署中&#xff0c;我遇到一个奇怪的问题&#xff1a;Go 程序在运行时不使用 /etc/resolv.conf 中的 DNS 设置&#xff0c;导致服务无法正常访问域名。这篇文章记录下完整的排查过程和最终的解决方案。1. 问题现象我有一个部署在 KVM 虚拟机内的 Go 应用&#xff0…

微服务相关问题(2)

1、Spring Cloud相关常用组件注册中心&#xff08;nacos、Eureka等&#xff09;、负载均衡&#xff08;Ribbon、LoadBalancer&#xff09;、远程调用&#xff08;feign&#xff09;、服务熔断&#xff08;Sentinel、Hystrix&#xff09;、网关&#xff08;Gateway&#xff09;2…

安全初级2

一、作业要求 1、xss-labs 1~8关 2、python实现自动化sql布尔育注代码优化(二分查找) 二、xss-labs 1~8关 1、准备 打开小皮面板&#xff0c;启动MySQL和apacher 下载 xss-labs&#xff0c;并解压后放到 phpstudy_pro 的 WWW 目录下&#xff0c;重命名为 xss-labs 访问链…

基础算法题

基础算法题 链表 1.1反转链表 描述&#xff1a; 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤&#xfffd;≤…

Android 15 源码修改:为第三方应用提供截屏接口

概述 在 Android 系统开发中,有时需要为第三方应用提供系统级的截屏功能。本文将详细介绍如何通过修改 Android 15 源码中的 PhoneWindowManager 类,实现一个自定义广播接口来触发系统截屏功能。 修改方案 核心思路 通过在系统服务 PhoneWindowManager 中注册自定义广播监…

20250717 Ubuntu 挂载远程 Windows 服务器上的硬盘

由 DeepSeek 生成&#xff0c;方法已经验证可行。 通过网络挂载Windows共享硬盘&#xff08;SMB/CIFS&#xff09; 确保网络共享已启用&#xff1a; 在Windows电脑上&#xff0c;右键点击目标硬盘或文件夹 → 属性 → 共享 → 启用共享并设置权限&#xff08;至少赋予读取权限&…

深度学习图像增强方法(二)

三、直方图均衡化 1. 普通直方图均衡化 直方图均衡化的原理是将图像的灰度直方图展平,使得每个灰度级都有更多的像素分布,从而增强图像的对比度。具体步骤如下: 计算灰度直方图:统计图像中每个灰度级的像素数量。 计算累积分布函数(CDF):计算每个灰度级的累积概率。 映…

QT——信号与槽/自定义信号与槽

1 信号与槽基本介绍 提出疑问&#xff0c;界面上已经有按键了&#xff0c;怎么操作才能让用户按下按键后有操作上的反应呢&#xff1f; 在 Qt 中&#xff0c;信号和槽机制是一种非常强大的事件通信机制。这是一个重要的概念&#xff0c;特别是对于初学者来说&#xff0c;理解它…

Spring原理揭秘--Spring的AOP

在这之前我们已经介绍了AOP的基本功能和概念&#xff0c;那么当AOP集成到spring则会发生改变。Spring AOP 中的Joinpoint&#xff1a;之前提高了很多Joinpoint的类型&#xff0c;但是在spring中则只会有方法级别的Joinpoint&#xff0c;像构造方法&#xff0c;字段的调用都没适…

C++学习笔记五

C继承//基类 class Animal{};//派生类 class Dog : public Animal{};#include<iostearm> using namespace std;//基类 class Shape{public:void setwidth(int w){width w;}void setheight(int h){height h;}protected:int width;int height;}//派生类 class Rectangle …

AndroidStudio环境搭建

一、AndroidStudio下载 正常百度出来的站会自动翻译成中文&#xff0c;导致历史版本的界面总是显示不出可下载的地方&#xff0c;点击成切回英文&#xff0c;就能看出了。 历史版本&#xff1a;https://developer.android.google.cn/studio/archive

Java大厂面试实录:从Spring Boot到AI大模型的深度技术拷问

场景&#xff1a;互联网大厂Java后端面试 面试官&#xff08;严肃&#xff09;&#xff1a;小曾&#xff0c;请坐。今天主要考察Java后端技术栈&#xff0c;包括微服务、大数据、AI等。我们先从简单问题开始。 小曾&#xff08;搓手&#xff09;&#xff1a;好嘞&#xff01;面…

深入解析Hadoop中的HDFS架构设计

HDFS概述与核心设计原则作为Hadoop生态系统的基石&#xff0c;HDFS&#xff08;Hadoop Distributed File System&#xff09;是一种专为大规模数据处理而设计的分布式文件系统。它的核心设计理念源于对互联网时代数据特征的深刻洞察——数据规模呈指数级增长&#xff0c;而硬件…

ota之.加密算法,mcu加密方式

一、ota之.加密算法&#xff0c;mcu加密方式 前面一篇文章&#xff0c;讲了soc的加密方式&#xff0c;但是soc资源充足&#xff0c;mcu没有&#xff0c;所以不会用openss生成公私钥 切计算哈希用rsa256位。 ECC&#xff08;椭圆曲线加密&#xff09; 是一种非对称加密算法&…

LangChain面试内容整理-知识点23:实战案例:检索增强生成(RAG)系统

检索增强生成(Retrieval-Augmented Generation, RAG)是一种将LLM与外部知识库结合的方法,通过实时检索相关信息来辅助生成答案。这极大缓解了LLM“封闭知识”过期或不足的问题。LangChain非常适合构建RAG系统,因为它提供了文档加载、向量存储、检索接口、LLM组合的一站式方…

探索阿里云ESA:开启边缘安全加速新时代

阿里云 ESA 是什么&#xff1f;阿里云 ESA&#xff0c;全称边缘安全加速&#xff08;Edge Security Acceleration&#xff09; &#xff0c;其前身为全站加速 DCDN&#xff08;Dynamic Content Delivery Network&#xff09;。在 2024 年 9 月 30 日&#xff0c;阿里云完成了这…

醋酸铈:赋能科技创新的稀土之力

一、什么是醋酸铈醋酸铈是铈元素与醋酸根离子形成的化合物。铈作为稀土元素中的重要一员&#xff0c;广泛应用于材料科学、催化剂、电子产品等领域。醋酸铈以无色结晶或浅黄色结晶的形式存在&#xff0c;是铈的有机盐之一。它不仅具有稳定的化学性质&#xff0c;而且在某些特定…

数据结构之普利姆算法

前言&#xff1a;Prim算法是图论中的算法&#xff0c;用来生成图的最小生成树。本篇文章介绍算法的流程&#xff0c;实现思想&#xff0c;和具体代码实现&#xff0c;使用c语言。学习需要输出才能理解的更透彻&#xff0c;所以说坚持写文章&#xff0c;希望可以用自己的方式把一…