pat1022__字符串查找
2024-08-27 20:53:21
主要是对字符串的查找,为了方便并且快速的实现查找,用map会比较方便
同时如何把一个带有空格的字符串变成多个单词也有一个小技巧
char *point=book[i].keyWord;//关键词分离
while(*point){
sscanf(point,"%s",str);
point+=strlen(str)+;
string stemp(str);
mm_keyWord[stemp].push_back(i);
}
#include<stdio.h>
#include<iostream>
#include<queue>
#include<map>
#include<vector>
#include<string>
#include<algorithm>
#include<string.h>
#include<algorithm>
using namespace std; struct BOOK{
char ID[];
char bname[];
char rname[];
char keyWord[];
char publisher[];
char year[];
}book[]; int cmp(BOOK x,BOOK y){
return strcmp(x.ID,y.ID)<;
} int main(){
int n,m;
while(scanf("%d",&n)!=EOF){
int i;
map<string,vector<int>>mm_bname;
map<string,vector<int>>mm_rname;
map<string,vector<int>>mm_keyWord;
map<string,vector<int>>mm_publisher;
map<string,vector<int>>mm_year; for(i=;i<=n;i++){
scanf("%s",book[i].ID);getchar();
gets(book[i].bname);
gets(book[i].rname);
gets(book[i].keyWord);
gets(book[i].publisher);
scanf("%s",&book[i].year);
}
sort(&book[],&book[+n],cmp);
//key word
char str[];
for(i=;i<=n;i++){
string s2(book[i].bname);
mm_bname[s2].push_back(i);
string s3(book[i].rname);
mm_rname[s3].push_back(i);
string s4(book[i].publisher);
mm_publisher[s4].push_back(i);
string s5(book[i].year);
mm_year[s5].push_back(i); char *point=book[i].keyWord;//关键词分离
while(*point){
sscanf(point,"%s",str);
point+=strlen(str)+;
string stemp(str);
mm_keyWord[stemp].push_back(i);
}
} int num,j;
scanf("%d",&m);
for(i=;i<=m;i++){
scanf("%d: ",&num);
gets(str);
string s1(str);
printf("%d: %s\n",num,str);
if(num==){
for(j=;j<mm_bname[s1].size();j++){
printf("%s\n",book[mm_bname[s1][j]].ID);
}
}
if(num==){
for(j=;j<mm_rname[s1].size();j++){
printf("%s\n",book[mm_rname[s1][j]].ID);
}
}
if(num==){
for(j=;j<mm_keyWord[s1].size();j++){
printf("%s\n",book[mm_keyWord[s1][j]].ID);
}
}
if(num==){
for(j=;j<mm_publisher[s1].size();j++){
printf("%s\n",book[mm_publisher[s1][j]].ID);
}
}
if(num==){
for(j=;j<mm_year[s1].size();j++){
printf("%s\n",book[mm_year[s1][j]].ID);
}
}
if(j==){
printf("Not Found\n");
}
}
} return ;
}
最新文章
- openssl
- 《嫌疑人X的献身》书评
- 自增build ID配置
- 读Effective Java笔记之one:static Factory methods instead of Constructors (静态工厂方与构造器)
- PLSQL_性能优化系列07_Oracle Parse Bind Variables解析绑定变量
- Jvm基础(2)-Java内存模型
- web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)
- Oracle 卸载 不干净
- Java实现生命周期管理机制
- Java使用默认浏览器打开指定URL
- Chapter 14_5 _ENV和load
- QT的安装及环境配置
- idea从git上拉取并管理项目
- Zigbee技术开发一 设置NV_RESTORE
- Kafka 详解(三)------Producer生产者
- DEV Winform分页用户组件
- Oracle数据库创建表是有两个约束带有默认索引
- Mongodb 常用语法
- pushlet 之 Pushlet使用手把手实例
- January 06 2017 Week 1st Friday