字符串替换--替换字符串中的空格为$$$。要求时间复杂度为O(N)
2017-07-19 00:09
447 查看
思路:
先遍历一遍字符串找出空格的数目,有空格则把空格数+1.
两个指针,一个指向原字符串结尾,一个指向替换后的字符串末尾。替换后的字符串长度等于原字符串长度+2*空格数。
循环结束的条件是oldend=newend,就停止循环。
先遍历一遍字符串找出空格的数目,有空格则把空格数+1.
两个指针,一个指向原字符串结尾,一个指向替换后的字符串末尾。替换后的字符串长度等于原字符串长度+2*空格数。
循环结束的条件是oldend=newend,就停止循环。
char* Repalce (char * str ) { int blank = 0; int newlen = 0; int oldlen = strlen( str); for ( int i = 0; i < oldlen; ++ i) { if (*( str + i) == ' ') blank++; } newlen = oldlen + 2 * blank; char* newend = str + newlen; char* oldend = str + oldlen; while ( oldend < newend) { if (* oldend == ' ') { for ( int i = 1; i <= 3;++ i) * newend-- = '$'; oldend--; } else{ * newend-- = * oldend--; } } return str; }
相关文章推荐
- 查找一个字符串中第一个只出现两次的字符,要求时间复杂度为O(N)。-替换字符串中的空格为$$$。要求时间复杂度为O(N)
- 替换字符串中的空格为$$$。要求时间复杂度为O(N)
- 【每日一题】替换字符串中的空格为$$$。要求时间复杂度为O(N)
- 将字符串中的空格替换,时间复杂度为0(n)解法
- 用指定字符串(如%20)替换空格 时间复杂度为O(n)
- 将字符串中的所有空格去掉,要求时间复杂度O(N)
- 人人都来写算法 之 移除字符串中重复的字符,时间复杂度要求O(n),空间复杂度O(1)
- [C语言常见面试题]查询一个字符串中第一个只出现一次的字符,要求时间复杂度为O(1)
- 剑指offer,时间复杂度为o(n)的空格替换算法,44页例子代码
- 求出字符串中第一个只出现一次的字符,要求时间复杂度小于O(2n)
- 给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
- 删除重复的字符(给一个字符串,删除连续重复的字符,要求时间复杂度为O(1)……)
- 把字符串中*全部移到字符串的头部---要求时间复杂度和空间复杂度
- 把字符串中的每个空格替换成“ ”,要求在原字符串上直接替换。(假设原字符串有足够空间)
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面 大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。 如:aAbBcCdD ---àabcdABCD
- 使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 在一个字符串中找到第一个只出现一次的字符,要求时间复杂度O(n)
- 动态规划求数组中和最大字串的值 以及 字符串的循环移位(要求空间复杂度O(1),时间复杂度O(n))