1035 Contraseña (20 puntos)
Ideas
Use la función de búsqueda y reemplazo del tipo de cadena para eliminar, sin la necesidad de usar la engorrosa matriz de caracteres. El
tipo de cadena se usa para determinar si hay un elemento en la cadena y reemplazar un elemento
La matriz de tipo char solo se usa al transformar la matriz, y recuerde poner '\ 0' después de ella
El uso específico de la función de reemplazo y la función de búsqueda del tipo de cadena se indican a continuación. Reemplazar debe tener un símbolo para ser reemplazado antes de que pueda usarse, de lo contrario, se informará un error.
int main() {
string a, b, c;
cin >> a >> b >> c;
int len=b.length();
while (a.find(b) != -1)
{
int i = a.find(b);
a.replace(i,len,c);
}
cout << a << endl;
return 0;
}
Código
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
string name[1005];
string strs[1005];
int num[1005]={
0};
int sum = 0;
for (int i =0 ;i<n;i++)
{
cin>> name[i]>>strs[i];
if (strs[i].find('1')!=-1 ||strs[i].find('l')!=-1||strs[i].find('0')!=-1||strs[i].find('O')!=-1)
{
sum+=1;
num[i]=1;
}
while (strs[i].find("1") != -1)
strs[i] = strs[i].replace(strs[i].find("1"),1, "@");
while (strs[i].find("l") != -1)
strs[i] = strs[i].replace(strs[i].find("l"),1, "L");
while (strs[i].find("0") != -1)
strs[i] = strs[i].replace(strs[i].find("0"),1, "%");
while (strs[i].find("O") != -1)
strs[i] = strs[i].replace(strs[i].find("O"),1, "o");
}
if(sum ==0)
if(n==1)
printf("There is %d account and no account is modified",n-sum);
else
printf("There are %d accounts and no account is modified",n-sum);
else
{
cout<<sum<<endl;
for (int i =0 ;i<n;i++)
if(num[i]!=0)
cout<<name[i]<<' '<<strs[i]<<endl;
}
}