pat1022__字符串查找
主要是对字符串的查找,为了方便并且快速的实现查找,用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 ;
}
pat1022__字符串查找的更多相关文章
- Rabin-Karp指纹字符串查找算法
首先计算模式字符串的散列函数, 如果找到一个和模式字符串散列值相同的子字符串, 那么继续验证两者是否匹配. 这个过程等价于将模式保存在一个散列表中, 然后在文本中的所有子字符串查找. 但不需要为散列表 ...
- 自己动手写文件查找,字符串查找,查询jar包等工具
文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...
- 关于字符串查找 charindex ,Patindex 还有一个like
字符串查找.在模糊朝找的情况下,其实3者的效率是差不多的.都需要一个一个取出来然后扫一遍╮(╯_╰)╭.然而用法还是会有一点儿的区别 1 charindex (查找的字符串,字符串表达式[,开始查找的 ...
- python 字符串查找
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法. 1 find()方法: )##从下标1开始,查找在字符串里第一个出现的子串:返回结果3 ...
- Sunday算法(字符串查找、匹配)
字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上,KMP算法并不比最简单的 ...
- lintcode:strStr 字符串查找
题目: 字符串查找 字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数.你的任务是实现这个函数. 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source ...
- Rabin-Karp字符串查找算法
1.简介 暴力字符串匹配(brute force string matching)是子串匹配算法中最基本的一种,它确实有自己的优点,比如它并不需要对文本(text)或模式串(pattern)进行预处理 ...
- php中常用的字符串查找函数strstr()、strpos()实例解释
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 1.$haystack被查找的字 ...
- 数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找
数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找 Boyer-Moore字符串查找算法 注意,<算法4>上将这个版本的实现称为Broyer-Moore算法,我看了 ...
随机推荐
- tcpdump 使用实例
详细的文档见tcpdump高级过滤技巧 基本语法 ========过滤主机--------- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据# tcpdump -i eth ...
- CentOS 6.5 x86_64升级内核到最新版2.6.32-696.1.1.el6.x86_64
安装keepaliver时内核版本不一致,会导致后来的keepalive安装完成后不能正常提供服务 [root@gmxfjr-dev17 ha]# ls /usr/src/kernels/2.6.32 ...
- Python中面向对象的一些关于类变量与实例变量的理解
1. 要写出有意义的面向对象的代码,最核心的:类.对象.三大特性:继承.封装.多态 类变量与实例变量: class Student(): # 类变量 name = '张' age = 0 def __ ...
- C++进阶3.字节对齐 联合
C++进阶3.字节对齐 联合 20131011 多益和金山笔试 知识漏洞 20131011 前言: 今天下午是多益网络的笔试,整体感觉还好,但是找到很多的知识漏洞.一直笔试到6:00,然后紧张的从会生 ...
- SQL 按照多个字段为标准的重复数据处理
表结构:T1 id int Uncheckedname nchar(10) Checkedvalue nchar(10) Checked 数据: 1 a a1 2 a a1 3 b b1 4 b b2 ...
- Selenium实现右键保存图片(Java)
1.代码 public class SaveImage extends TestCase { private WebDriver driver; private Actions action; pri ...
- (转)MapReduce Design Patterns(chapter 4 (part 2))(八)
Binning Pattern Description 分箱模式,跟前面的类似,分类记录且不考虑记录的顺序. Intent 归档数据集中的每条记录到一个或多个类别. Motivation 分箱和分区很 ...
- 激活函数之softmax介绍及C++实现
下溢(underflow):当接近零的数被四舍五入为零时发生下溢.许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同.例如,我们通常要避免被零除或避免取零的对数. 上溢(overflow): ...
- React-Native进阶_5.导航 Naviagtion
有这样一个组件 他可以控制页面跳转 返回,在移动端叫做导航控制器, 在RN中叫路由 我们使用的 react-native-navigation 是一个开源组件库介绍:A complete nativ ...
- 大牛deep learning入门教程
雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...