题目1165:字符串匹配
来源:互联网 发布:电脑程序编程入门 编辑:程序博客网 时间:2024/05/29 03:56
前言
本来想看道题目直接睡觉,再看他人解答前看到说这道题是北航上机题目,当时做出来的人很少,因此我就按耐不住激动的心情,遇到这种题目,我必须自己ac啊,中间跟一个同学讲了一下git的使用,浪费了一些时间,从调试到ac花费了大约40多分钟吧,走神了一段时间,毕竟开始做题已经晚上1点了,难免精力不集中
开始时间:
结束时间:
ac过程:
题目
题目描述: 读入数据string[ ],然后读入一个短字符串。要求查找string[ ]中和短字符串的所有匹配,输出行号、匹配字符串。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。输入:输入有多组数据。每组数据第一行输入n(1<=n<=1000),从第二行开始输入n个字符串(不含空格),接下来输入一个匹配字符串。输出:输出匹配到的字符串的行号和该字符串(匹配时不区分大小写)。样例输入:4Aaba2BabABBa[a2b]b样例输出:1 Aab2 a2B4 ABB
ac代码
太晚了,不讲思路了,也没什么难度,就是模拟一下正则
#include <stdio.h>#include <stdlib.h>#include <string.h> #define MAX 1001#define LEN 101 struct str{ char name[101];}; int main(){ struct str strs[MAX]; struct str t[LEN]; int i, n, len, j, k, left, right, count, flag; char text[LEN], newtext[LEN]; while (scanf("%d", &n) != EOF) { // 接收数据 getchar(); for (i = 0; i < n; i ++) { scanf("%s", strs[i].name); } // 接收文本串 getchar(); gets(text); len = strlen(text); for (i = left = right = 0; i < len; i ++) { if (text[i] == '[') { left = i; } else if (text[i] == ']') { right = i; break; } } count = right - left - 1; if (count <= 0) { // 没有正则匹配 for (i = j = 0; i < len; i ++) { if (text[i] != '[' && text[i] != ']') { newtext[j ++] = text[i]; } } newtext[j] = '\0'; for (i = 0; i < n; i ++) { if (strcasecmp(strs[i].name, newtext) == 0) { printf("%d %s\n", i + 1, strs[i].name); } } }else { // 需要正则匹配 for (j = 1, k = 0; j <= count; j ++, k ++) { // 构建文本数组 memset(t[k].name, '\0', sizeof(t[k].name)); for (i = 0; i < left; i ++) { t[k].name[i] = text[i]; } t[k].name[i] = text[left + j]; strcat(t[k].name, text + right + 1); } // 正则匹配 for (i = 0; i < n; i ++) { for (j = flag = 0; j < count; j ++) { if (strcasecmp(strs[i].name, t[j].name) == 0) { flag = 1; break; } } if (flag) { printf("%d %s\n", i + 1, strs[i].name); } } } } return 0;}/************************************************************** Problem: 1165 User: wangzhengyi Language: C Result: Accepted Time:0 ms Memory:948 kb****************************************************************/
- 题目1165:字符串匹配
- 题目1165:字符串匹配
- 题目1165:字符串匹配
- 题目1165:字符串匹配
- 题目1165:字符串匹配
- 九度oj 题目1165:字符串匹配
- 九度OJ-题目1165:字符串匹配
- ccf题目:字符串匹配
- 华为OJ题目(十六):字符串匹配
- 九度机试 题目1165:字符串匹配 2008年北京航空航天大学计算机研究生机试真题
- 解一道通过预处理来匹配字符串的题目
- 2014第二届ccf认证试题 题目 3 字符串匹配
- kmp算法(字符串匹配 next应用 hdu题目集合)
- 九度1165 字符串匹配
- 九度-1165 字符串匹配
- 字符串匹配
- 字符串匹配
- 字符串匹配
- 对付CNNIC这样的老流氓,国民应剥其皮揭它老底----CNNIC证书的危害及其清除
- Eclipse快捷键
- Mysql blackhole(黑洞引擎)
- 大型网站数据库架构问题及解决方案(转)
- NSDate的计算问题、日期计算、时区问题、NSTimer
- 题目1165:字符串匹配
- Java Upload to FTP
- 数据结构之单链表实现队列C++
- 数据结构— 数组循环队列C++
- 常见字符编码精解
- How to install OS X Mountain Lion in Virtualbox with iAtkos
- Hibernate 与 Spring 多数据源的配置
- 指针的认识
- Struts2 Chain跳转问题 找不到action