1035
1.用password[i].find("1") 判断指定子串是否在字符串中,若返回值是string::npos则说明不在,否则返回位置。
2.用<algorithm>中的replace(password[i].begin(), password[i].end(),'1','@')替换字符串中的指定字符,如本句把1替换为@。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int MAX = 1000;
int main(int argc, const char * argv[]) {
int N;
cin>>N;
int mod[MAX] = {0};
string username[MAX];
string password[MAX];
int count = 0;
for (int i=0; i<N; i++) {
cin>>username[i]>>password[i];
if (password[i].find("1") != string::npos) {
mod[i] = 1;
replace(password[i].begin(), password[i].end(),'1','@');
}
if (password[i].find("0") != string::npos) {
mod[i] = 1;
replace(password[i].begin(), password[i].end(),'0','%');
}
if (password[i].find("l") != string::npos) {
mod[i] = 1;
replace(password[i].begin(), password[i].end(),'l','L');
}
if (password[i].find("O") != string::npos) {
mod[i] = 1;
replace(password[i].begin(), password[i].end(),'O','o');
}
if (mod[i]) {
count++;
}
}
if (count == 0) {
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);
}
}
else{
cout<<count<<endl;
for (int i=0; i<N; i++) {
if (mod[i]) {
cout<<username[i]<<" "<<password[i]<<endl;
}
}
}
return 0;
}