题目描述
比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下:A < a < B < b < ………… < Z < z。
输入
输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。
输出
如果第一个字符串小于第二个,输出YES,否则,输出NO。
注意:A < a < B < b < ………… < Z < z。
样例输入 Copy
abc
Bbc
Ab
a
ABcef
ABce
样例输出 Copy
YES
YES
NO
源代码
//本题由于给的字符串的比较方式是按照新的方式来比较
//所以我们可以用离散化的思想来做
//将英文字母转换为对应大小顺序的数字即可
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//离散化操作函数
char fun(char c)
{
if(c >= 'a' && c <= 'z')return (int(c) - 96) * 2;//小写字母位于偶数位
else if(c >= 'A' && c <= 'Z')return (int(c) - 64) * 2 - 1;//大写字母位于奇数位
}
int main()
{
string a,b;
while(getline(cin,a),getline(cin,b))
{
vector<string> ans;
//开始对于字符串进行离散化处理
for(int i = 0;i < a.size();i ++ )a[i] = fun(a[i]);
for(int i = 0;i < b.size();i ++ )b[i] = fun(b[i]);
ans.push_back(a);
ans.push_back(b);
//我们提供新的比较方式,直接用库函数按照此方式进行比较即可
if(ans[0] < ans[1])cout << "YES" << endl;
else cout << "NO" << endl;
}
}