合格的字符串

原创 2016年06月01日 14:34:44


总时间限制: 
1000ms 
内存限制: 
65535kB
描述

     老师给小学生门布置了一些作业,让它们按照一个模版写一些字符串交上来,

同学们把作业交上来了,问题来了,这么多的作业老师批改不过来,现在请你帮老师

写一个程序,帮助老师确定各个字符串是否合格。

    首先老师有一个匹配模版,比如是“aa[123]bb”这一个字符串,同学们交的各种

作业字符串如aa1bb、aa2bb、aa3bb都算是正确匹配看,而aacbb就是错误的字符串。

(即待查字符串对应于模版方括号内的部分,应该为方括号内字符串的一个子字符)。

    我们需要做的就是按照模版,找出正确的字符串和所在的行。

输入
输入的第一行为一个整数n,表示有多少个学生的作业,即有多少行需要检查的字符串。(1<=n<=50)
中间为n行字符串,代表着n个学生们写的作业。每个字符串长度小于50。
最后一行为1行字符串,代表着老师给的匹配模板。
输出
输出合格的字符串的行号和该字符串。(中间以空格隔开)
样例输入
4
Aab
a2B
ab
ABB
a[a2b]b
样例输出
1 Aab
2 a2B
4 ABB

#include<stdio.h>
#include<string.h>
int change(char a,char b){
	if(a>='a'&&a<='z'&&(a==b||a!=b&&a-32==b)){
		return 1;
	} 
	if(a>='A'&&a<='Z'&&(a==b||a!=b&&a+32==b)){
		return 1;
	}
	if(a==b){
		return 1;
	}
	return 0;
}
int isvalible(char a[],char b[]){
	int i,j,k=0,t,f1=1,f2=0,f3=1;
	char c[51];
	for(i=0,j=0;b[j]!='[';i++,j++){
		if(!change(a[i],b[j]))
		 f1 = 0;
	}
	if(b[j]=='['){
		j++;
	}
	while(b[j]!=']'){
		c[k++]=b[j++];
	}
	if(b[j]==']'){
		j++;
	}
	if(strlen(a)<strlen(b)-2-(k-1)){
		return 0;
	} 
	for(t=0;t<k;t++){
		if(change(a[i],c[t])){
	        f2 = 1;
		}
	}
	for(i++;i<strlen(a)&&j<strlen(b);i++<j++){
		if(!change(a[i],b[j])){
			f3=0;
		}
	}
	if(f1&&f2&&f3){
		return 1 ;
	}
	return 0;
}
int main(){
	char a[50][51];
	char pattern[51];
	int t,i=0,k;
	scanf("%d",&t);
	while(t--){
		scanf("%s",a[i++]); 
	} 
	scanf("%s",pattern);
	for(k=0;k<i;k++){
		if(isvalible(a[k],pattern)){
			printf("%d %s\n",k+1,a[k]); 
		}
    }
	return 0; 
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

合格的字符串

1:合格的字符串 查看提交统计提问 总时间限制: 1000ms 内存限制: 65535kB 描述      老师给小学生门布置了一些作业,让它们按照一个模版...

如何做一名合格的产品经理

  • 2013年10月11日 11:29
  • 27KB
  • 下载

一个合格的程序员应该读过哪些书

编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的? “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业...

如何成为一名合格的架构师

  • 2014年10月08日 17:46
  • 464KB
  • 下载

一个合格的运维工程师应该具有的素质

网上看到有人写了一篇文章,关于一个合格的运维工程师应该具体哪些素质,正好前段时间有位boss也问过我这个问题。 简单地写下自己的看法。。 1.良好的责任心 ops是直接面向生成环境的一线操作人员,...

城市监控报警联网系统 合格评定

  • 2014年10月22日 10:22
  • 4.5MB
  • 下载

如何成为一名合格程序员

  • 2009年11月03日 00:48
  • 33KB
  • 下载

这些前端面试的问题,搞懂了你就合格了

@版本 1.0 备注: 本repo包含了一些前端面试问题用于考查候选者。不建议对单个候选者问及每个问题(那需要好几个小时)。只要从列表里挑选一些,就能帮助你考查候选者是否具备所需要的技能了。 记住...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合格的字符串
举报原因:
原因补充:

(最多只允许输入30个字)