替换字符串中的空格
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’者结束拷贝。代码如下:
运行结果图:
两次遍历时间为N+N+2*count,即时间复杂度为O(N);开辟空间长度为N+2*count,即空间复杂度为O(N)。
4000
程序如有问题,或者有更好的解决方法,欢迎各路高手留言指教。
例如字符串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
程序如有问题,或者有更好的解决方法,欢迎各路高手留言指教。
相关文章推荐
- 【C语言】【面试题】【笔试题】.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。
- 【C语言】:字符串替换空格,输入“we are happy!”,输出”we%20are%20happy!“
- 替换字符串,裁掉字符串两端的空格---轻开平台(原WebEasy)字符串计算6
- 将字符串中的空格用逗号替换
- 请实现一个函数,将一个字符串中的空格替换成“%20”。
- 剑指offer----005(字符串空格替换)
- python实现剑指offer系列2:字符串空格替换
- 字符串替换空格
- 字符串替换空格
- java 多个空字符替换成一个 字符串数字前添加空格
- [JavaScript] JavaScript替换字符串中的空格
- JS PHP替换文本框多行文本的空格,回车;去掉字符串最后的逗号
- iOS字符串NSString中去掉空格(或替换为某个字符串)
- 字符串替换空格
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 字符串替换空格-牛客网-剑指offer
- 替换字符串中的空格
- 请实现一个函数,把字符串中的每个空格替换成“ ”
- 剑指offer-04:字符串替换空格
- 字符串数组空格的替换