题解 CF928A 【Login Verification】

我有STL妄想症

STL大法好!

本题可以用STL的map,string,pair + algorithm中的transform做

将字符串全部转为大写,I,L转为1,0转为O

然后判断是否是重复的

这里注意,第一个读入的字符串也要转换

代码:

#include <iostream>//读入输入
#include <utility>//pair,因为有map头文件,可加可不加
#include <map>//map
#include <cctype>//toupper
#include <algorithm>//transform
#include <cstring>//string
using namespace std;

map<string, bool> mp;//定义

string s, x;//定义

int main()
{
    cin >> s;
    transform(s.begin(), s.end(), s.begin(), ::toupper);//转大写
    for(string::iterator it = s.begin(); it != s.end(); ++it)//预处理,用迭代器
    {
        if(*it == '0')
        {
            *it = 'O';
        }
        else if(*it == 'L' || *it == 'I')
        {
            *it = '1';
        }
    }
    mp.insert(pair<string, bool>(s, true));//insert一下
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {//同上
        cin >> x;
        transform(x.begin(), x.end(), x.begin(), ::toupper);
        for(string::iterator it = x.begin(); it != x.end(); ++it)
        {
            if(*it == '0')
            {
                *it = 'O';
            }
            else if(*it == 'L' || *it == 'I')
            {
                *it = '1';
            }
        }
        if(mp[x])
        {
            cout << "No\n";
            return 0;
        }
        mp.insert(pair<string, bool>(x, true));
    }
    cout << "Yes\n";
    return 0;
}
posted @   HappyBobb  阅读(11)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示