比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下:A < a < B < b < ………… < Z < z。
输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。
如果第一个字符串小于第二个,输出YES,否则,输出NO。 注意:A < a < B < b < ………… < Z < z。
abc
Bbc
Ab
a
ABcef
ABce
YES
YES
NO
#include
#include
int main(){
char buf1[10001], buf2[10001];
int len1, len2,len;
double num1, num2; //数字化表示的结果
while (scanf("%s%s",buf1,buf2)!=EOF)
{
len1 = strlen(buf1);
len2 = strlen(buf2);
len = len1 > len2 ? len1 : len2;
for (int i = 0; i < len+1; i++) // len+1 表示考虑两个串的末尾 '\0'
{
if (buf1[i] >= 'A'&&buf1[i] <= 'Z'){
num1 = (int)(buf1[i] - 'A')-0.5;
}
else if (buf1[i]>='a'&&buf1[i]<='z')
{
num1 = (int)(buf1[i] - 'a');
}
else
{
num1 = -1; //比较到了 '\0' ,结果应该是NO ,故第一个应大于第二个数字
}
if (buf2[i] >= 'A'&&buf2[i] <= 'Z'){
num2 = (int)(buf2[i] - 'A') - 0.5;
}
else if (buf2[i] >= 'a'&&buf2[i] <= 'z')
{
num2 = (int)(buf2[i] - 'a');
}
else
{
num2 = -2; //比较到了 '\0',结果应该是NO,故第二个应该小于第一个数字
}
if (num1num2)
{
printf("NO
");
break;
}
}
memset(buf1, '\0', 10001);
memset(buf2, '\0', 10001);
}
}
留言与评论(共有 0 条评论) “” |