POJ2743字符串比较

来源:互联网 发布:淘宝知网检测靠谱吗 编辑:程序博客网 时间:2024/05/02 00:58

先贴最终代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>int stricmp1(char*s1,char *s2){int l=strlen(s1);int l2=strlen(s2);if(l!=l2)return 1;int i;for(i=0;i<l;i++)if(s1[i]>='A'&&s1[i]<='Z')s1[i]=s1[i]+32;for(i=0;i<l2;i++)if(s2[i]>='A'&&s2[i]<='Z')s2[i]=s2[i]+32;return strcmp(s1,s2);}int main(){char a[101];char aa[101];char b[101];char bb[101];int i,j;int n;scanf("%d",&n);getchar();for(j=0;j<n;j++){memset(a,0,sizeof(a));memset(b,0,sizeof(b));    gets(a);gets(b);int l=0;int l1=0;if(sizeof(a)!=sizeof(b)){printf("NO\N");continue;}for(i=0;a[i]!='\0';i++){if(a[i]==' ')continue;    aa[l]=a[i];l++;}aa[l]='\0';for(i=0;b[i]!='\0';i++){if(b[i]==' ')continue;    bb[l1]=b[i];l1++;}bb[l1]='\0';   if(stricmp1(aa,bb)==0)printf("YES\n");   else printf("NO\n");getchar();}return 0;}

字符串比较问题:

Description
判断两个由大小写字母和空格组成的字符串在忽略大小写和压缩掉空格后是否相等
Input
第1行是测试数据的组数n,每组测试数据占2行,第1行是第一个字符串s1,第2行是第二个字符串s2。
每组测试数据之间有一个空行,每行数据不超过100个字符(注意字符串的长度可能为0)
Output
n行,相等则输出YES,否则输出NO
Sample Input
3a A bb BB ccc CCCAa BBbb CCCccca              dfadf              fasdfadasddfsfsaf
Sample Output
YESYESNO
一开始代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>int stricmp1(char*s1,char *s2){int l=strlen(s1);int l2=strlen(s2);if(l!=l2)return 1;int i;for(i=0;i<l;i++)if(s1[i]>='A'&&s1[i]<='Z')s1[i]=s1[i]+32;for(i=0;i<l2;i++)if(s2[i]>='A'&&s2[i]<='Z')s2[i]=s2[i]+32;return strcmp(s1,s2);}int main(){char a[101];char aa[101];char b[101];char bb[101];int i,j;int n;scanf("%d",&n);getchar();for(j=0;j<n;j++){memset(a,0,sizeof(a));memset(b,0,sizeof(b));    gets(a);gets(b);int l=0;int l1=0;if(sizeof(a)!=sizeof(b)){printf("NO\N");continue;}for(i=0;a[i]!='\0';i++){if(a[i]==' ')continue;    aa[l]=a[i];l++;}aa[l]='\0';for(i=0;b[i]!='\0';i++){if(b[i]==' ')continue;    bb[l1]=b[i];l1++;}bb[l1]='\0';   if(stricmp1(aa,bb)==0)printf("YES\n");   else printf("NO\n");}return 0;}

可以发现与最终代码比较,只是最后加了一个getchar()消掉回车换行,但就是因为这个,我试了很多次都是WC,注意如下:

1.空白行和只有回车的行也算相等

2.不能直接使用stricmp,需要自己定义函数

3.在输入最后一组测试数据之后,仍然是需要用getchar()再吃掉一个回车换行

0 0
原创粉丝点击