1155: 字符串比较 多实例
时间限制: 1 Sec 内存限制: 128 MB提交: 5955 解决: 2571
[状态] [讨论版] [提交] [命题人:admin] 题目描述
比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下:A < a < B < b < ………… < Z < z。
输入输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。
输出如果第一个字符串小于第二个,输出YES,否则,输出NO。
注意:A < a < B < b < ………… < Z < z。
Bbc
Ab
a
ABcef
ABce
样例输出 Copy
YES
YES
NO
代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,len1,len2,res;
char s1[10000]={0},s2[10000]={0};
while(scanf("%s%s",s1,s2)!=EOF)//输入两个字符串
{
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<len1;i++){
if(s1[i]>='a')
s1[i]=(s1[i]-'a')*2+1;//将小写字母转化为前26*2中ascii码为1,3,5...的字符
else
s1[i]=(s1[i]-'A')*2;//将大写字母转化为前26*2中ascii码为2,4,6...的字符
}
for(i=0;i<len2;i++){
if(s2[i]>='a')
s2[i]=(s2[i]-'a')*2+1; //将小写字母转化为前26*2中ascii码为1,3,5...的字符
else
s2[i]=(s2[i]-'A')*2; //将大写字母转化为前26*2中ascii码为2,4,6...的字符
}
res=strcmp(s1,s2); //再调用strcmp比较转化后的字符串进行比较
if(res<0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
//tips:将大小写字母往前转化为26*2个字母,连续在一起,方便比较