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

题目描述

比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下: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;
    }
}

猜你喜欢

转载自blog.csdn.net/couchpotatoshy/article/details/126077338