Je voulais écrire un code qui supprimerait un caractère donné d'une chaîne. Je suis venu avec l'extrait suivant. Maintenant, alors que cela fait mon travail, cela me donne la complexité du pire cas de O (n^2). Quelqu'un peut-il m'aider à améliorer cela.Supprimer un caractère d'une chaîne
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void Push(char *, int i);
int n=6;
int main()
{
clrscr();
char *p = "helelo";
char delChar = 'e';
for(int i=0;i<5;i++)
{
if(*(p + i) == delChar)
{
Push(p, i);
}
}
cout<<p<<endl;
getch();
return 1;
}
void Push(char *p, int i)
{
for(int k=i;k<n;k++)
{
*(p + k) = *(p+k+1);
}
}
Merci
vous devez marcher à travers la liste une fois, et quand vous trouvez le caractère w Pour supprimer, parcourez la liste à partir de ce point mais copiez l'élément suivant dans le courant comme vous le faites. Aussi, pourquoi n'utilisez-vous pas les tableaux 'std :: string'/char, ne faites pas' p [k] 'au lieu de l'indexation manuelle, et renvoyez 1 (0 est un succès)? – GManNickG