ICPC--1155: 字符串比较多实例
题目描述
比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下: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<stdio.h> #include<string.h> 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 (num1<num2) { printf("YES\n"); break; } else if (num1>num2) { printf("NO\n"); break; } } memset(buf1, '\0', 10001); memset(buf2, '\0', 10001); } }
ICPC--1156: 单数变复数