密码
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。其余内容均为作者原创。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。