您的位置:首页 > 其它

替换字符串中的空格

2018-02-05 17:34 316 查看
替换字符串中的空格的方法有很多,在这里我们实现一种时间复杂度与空间复杂度都为O(N)的方法,使用C++语言实现。

例如字符串talk is cheap show me the code,我们要将其替换为talk***is***cheap***show***me***the***code,并且打印到屏幕上。

方法论述:

定义一个字符型指针str,用于遍历字符串。再定义两个size_t型变量len与count,分别用于记录字符串的长度和字符串中空格的数量,然后用new在堆上开辟一个len+2*count+1长度的空间,用于存放替换后的字符串。将原串逐个拷贝到新空间中,遇到空格就进行替换,遇到’\0’者结束拷贝。代码如下:

char* replace(char* crt)
{
if(crt)
{
char* str = crt;
size_t count = 0;
size_t len = 0;
while(*str++)
{
if(*str == ' ')
count++;
len++;
}
char* pnewstr = new char[len+2*count+1];
str = pnewstr;
while(*str++ = *crt++)
{
if(*(crt-1) == ' ')
{
*(str-1) = '*';
*str++ = '*';
*str++ = '*';
}
}
return pnewstr;
}
return NULL;
}


运行结果图:



两次遍历时间为N+N+2*count,即时间复杂度为O(N);开辟空间长度为N+2*count,即空间复杂度为O(N)。
4000

程序如有问题,或者有更好的解决方法,欢迎各路高手留言指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: