题目要求:
给定n个人的用户名和密码,按照要求替换密码中的特定字符(1 (one) by @, 0 (zero) by %, l by L, and O by o),如果不存在需要修改的密码,则需要根据单复数输出There is(are) 1(n) account(s) and no account is modified
算法思路:
在输入密码的时候就遍历该密码的每一个字符,使用flag标记该密码是否需要修改,如果修改过就使用vector<string> modified保存修改过的字符串(username+password),其大小可以用来判断修改过的密码的多少 ,最后按照modified.size()是否为0来进行不同的输出即可。
提交结果:
AC代码:
#include<cstdio>
#include<string>
#include<iostream>
#include<vector>
using namespace std;
vector<string> modified;//用于保存修改过的字符串(username+password),其大小可以用来判断修改过的密码的多少
int main(){
int n;//密码总数
cin>>n;
string username,password;
for(int i=0;i<n;++i){
cin>>username>>password;//修改密码中的1 (one) by @, 0 (zero) by %, l by L, and O by o
bool flag = false;//判断是否被修改
for(int j=0;j<password.size();++j){
if(password[j]=='1'){
password[j] = '@';
flag = true;
}
if(password[j]=='0'){
password[j] = '%';
flag = true;
}
if(password[j]=='l'){
password[j] = 'L';
flag = true;
}
if(password[j]=='O'){
password[j] = 'o';
flag = true;
}
}
if(flag){//修改过了
modified.push_back(username+" "+password);
}
}
if(modified.size()==0){
if(n>1){
cout<<"There are "<<n<<" accounts and no account is modified";
}else{
cout<<"There is 1 account and no account is modified";
}
}else{
cout<<modified.size()<<endl;
for(auto s:modified){
cout<<s<<endl;
}
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。