#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string>
#include <sstream>
using namespace std;
int main() {
int t=0;
stringstream ss;
char c;
int counter=0;
string s1,s2;
scanf("%d",&t);
for(int i=0;i<t;i++){
cin>>s1>>s2;
bool flag=false;
for(int j=0;j<s2.length();j++){
c=s2[j];
if(c=='0'||c=='1'||c=='l'||c=='O'){
switch (c)
{
case '0':
s2[j]='%';
break;
case '1':
s2[j]='@';
break;
case 'l':
s2[j]='L';
break;
case 'O':
s2[j]='o';
break;
}
flag=true;
}
}
if(flag){
ss<<s1<<" "<<s2<<endl;
counter++;
}
}
if(!counter){
if(t==1)
cout<<"There is 1 account and no account is modified"<<endl;
else
cout<<"There are "<<t<<" accounts and no account is modified"<<endl;
}else{
cout<<counter<<endl;
for(int i=0;i<counter;i++){
ss>>s1>>s2;
cout<<s1<<" "<<s2<<endl;
}
}
return 0;
}
柳神代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
scanf("%d", &n);
vector<string> v;
for(int i = 0; i < n; i++) {
string name, s;
cin >> name >> s;
int len = s.length(), flag = 0;
for(int j = 0; j < len; j++) {
switch(s[j]) {
case '1' : s[j] = '@'; flag = 1; break;
case '0' : s[j] = '%'; flag = 1; break;
case 'l' : s[j] = 'L'; flag = 1; break;
case 'O' : s[j] = 'o'; flag = 1; break;
}
}
if(flag) {
string temp = name + " " + s;
v.push_back(temp);
}
}
int cnt = v.size();
if(cnt != 0) {
printf("%d\n", cnt);
for(int i = 0; i < cnt; i++)
cout << v[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;
}
首先要看出个数在字符串前面输出,然后可以用vector储存strig+“ ”+string。