其他分享
首页 > 其他分享> > ZZULIOJ--1155: 字符串比较 多实例

ZZULIOJ--1155: 字符串比较 多实例

作者:互联网

1155: 字符串比较 多实例

时间限制: 1 Sec  内存限制: 128 MB
提交: 5955  解决: 2571
[状态] [讨论版] [提交] [命题人:admin] 题目描述

比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下:A < a < B < b < ………… < Z < z。

输入

输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。

输出

如果第一个字符串小于第二个,输出YES,否则,输出NO。
注意:A < a < B < b < ………… < Z < z。

样例输入 Copy

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个字母,连续在一起,方便比较

标签:...,26,--,s2,s1,ZZULIOJ,1155,字符串,ascii
来源: https://blog.csdn.net/qq_63202674/article/details/122548022