密码

密码

1. 题目地址

    https://www.acwing.com/problem/content/1521/

2. 题目解析

    这道题的题意直接看原题即可,没什么需要解释的。

3. 题解

    1.  我们可以用两个string数组来存储已经修改密码的人及已经修改的密码。即,string name[] 和 string pwd[]。
    2.  我们还需要一个变量m来存储已经修改密码的人的数量。
    3.  如果m等于0,那么我们需要处理特别情况。(看题目即可)
    4.  如果m不等于0,那么我们直接将数组当中已经修改密码的人及已经修改的密码按照输入的次序输出即可。  

4. 代码

#include <iostream>
#include <cstdio>

using namespace std;

const int N = 1010;

//存储已经修改密码的人及已经修改的密码
string name[N],pwd[N];

int n;

//该函数的作用是修改用户密码,并将修改过的密码返回

string change_pwd(string pwd){
    string res = "";
    for(int i=0;i<pwd.size();i++){
        if(pwd[i] == '1'){
            res += '@';
        }else if(pwd[i] == '0'){
            res += '%';
        }else if(pwd[i] == 'l'){
            res += 'L';
        }else if(pwd[i] == 'O'){
            res += 'o';
        }else {
            res += pwd[i];
        }
    }
    return res;
}



int main(){
    int m = 0;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        string cur_name,cur_pwd;
        cin >> cur_name >> cur_pwd;
        string changed_pwd = change_pwd(cur_pwd);
        //如果密码需要改动
        if(changed_pwd != cur_pwd){
            //记录已经改动密码的用户名及密码
            name[m] = cur_name;
            pwd[m++] = changed_pwd;
        }
    }
    if(m != 0){
        printf("%d\n",m);
        for(int i=0;i<m;i++){
            cout << name[i] << " " << pwd[i] << endl;
        }
    }else{
        if(n == 1){
            printf("There is 1 account and no account is modified");
        }else{
            printf("There are %d accounts and no account is modified",n);
        }
    }
    return 0;
}
    作者:gao79138
    链接:https://www.acwing.com/
    来源:本博客中的截图、代码模板及题目地址均来自于Acwing。其余内容均为作者原创。
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @   夏目^_^  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示