我想编写一个代码,用于从字符串中删除给定的字符。我想出了以下代码片段。删除字符串中的字符
现在,虽然这是我的工作,但它给我的最坏情况复杂度为O(n^2)。任何人都可以帮助我改善这一点。
#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);
}
}
由于
你应该在列表中走一次,当你发现你W上的字符蚂蚁删除,从这一点一步一步通过列表,但像你这样复制下一个元素到当前的元素。另外,为什么不使用'std :: string'/char数组,而不是执行'p [k]'而不是手动建立索引,并返回1(0表示成功)? – GManNickG 2010-10-31 04:51:18