九度OJ-题目1165:字符串匹配
来源:互联网 发布:号码归属地软件下载 编辑:程序博客网 时间:2024/05/19 02:31
题目链接:http://ac.jobdu.com/problem.php?pid=1165
题目描述:
读入数据string[ ],然后读入一个短字符串。要求查找string[ ]中和短字符串的所有匹配,输出行号、匹配字符串。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。
输入:
输入有多组数据。
每组数据第一行输入n(1<=n<=1000),从第二行开始输入n个字符串(不含空格),接下来输入一个匹配字符串。
输出:
输出匹配到的字符串的行号和该字符串(匹配时不区分大小写)。
样例输入:
4
Aab
a2B
ab
ABB
a[a2b]b
样例输出:
1 Aab
2 a2B
4 ABB
来源:
2008年北京航空航天大学计算机研究生机试真题
思路
有点正则匹配的感觉,简单的做法就是对每一个短串与给定的模式串(目标串)进行匹配判断。逐个匹配模式串的可选字符。
坑点:不给输入串的长度是什么鬼,难道都是假定短串100个字符、长串1000?
AC代码
#include<bits/stdc++.h>using namespace std;char str[1001][101];//这个二维数组的范围题目没给 char des[1001];int main(){ int n; while(~scanf("%d",&n)){ for(int i = 0;i < n;i++){ scanf("%s",str[i]); } cin >> des; int desLen = strlen(des); int j,k,len; for(int i = 0;i < n;i++){ len = strlen(str[i]); for(j = 0,k = 0;j < len&&k < desLen;j++,k++){ if(des[k] == '['){//注意这个一定要先考虑,否则会把[与数组判断 while(des[k] != ']'){ if(tolower(str[i][j]) != tolower(des[k])){ break;//有匹配 } k++; }//无匹配退出 if(des[k] == ']'){ break;//没有可以匹配的,即失败 } while(des[k] != ']'){ k++; } }else if(tolower(str[i][j]) != tolower(des[k])){ break; } } if(k == desLen && j == len){ printf("%d %s\n", i+1, str[i]); } } } return 0;}
阅读全文
0 0
- 九度oj 题目1165:字符串匹配
- 九度OJ-题目1165:字符串匹配
- 九度OJ 1165:字符串匹配 (模式匹配)
- 九度OJ 1165:字符串匹配 字符串处理
- 九度OJ 题目1066:字符串排序
- 九度OJ 题目1206:字符串连接
- 九度OJ 题目1192:回文字符串
- 九度OJ 题目1135:字符串排序
- 九度OJ 题目1192:回文字符串
- 九度OJ题目1066:字符串排序
- 九度OJ 题目1066:字符串排序
- 九度OJ 题目1135:字符串排序
- 九度OJ题目1206:字符串连接
- 九度 OJ 题目1153:括号匹配问题
- 九度OJ 题目1153:括号匹配问题
- 【九度OJ】题目1153:括号匹配问题 解题报告
- 题目1153:括号匹配问题 九度OJ
- 九度OJ题目1153:括号匹配问题
- kettle5.3扩展step插件支持元数据注入
- Android多线程异步任务,在主线程中回调
- Kafka+Log4j实现日志集中管理
- python——使用itemgetter和sorted对列表内的元素进行排序
- Unity常用插件
- 九度OJ-题目1165:字符串匹配
- 一个例子让你彻底明白原型对象和原型链
- C语言函数itoa() 和atoi() 详解
- CSDN日报20170629——《你该关注“硬技术”还是“大道理”呢?》
- Activity的启动模式和标记位
- Python re 模块
- (1)clock source(时钟源)
- 了解什么是RESTful 接口规范
- HTTP学习之《图解HTTP》总结