题目:请实现一个函数,把字符串的每个空格替换成"%20"。例如,输入"We are happy.",则输出"We%20are%20happy."。
代码后面奉上^_^
大概思路就是先遍历一遍数组找出空格的个数,假设为k。那么替换后的长度为n+2k。从后往前遍历旧的内容,遇到空格就替换,从后往前往新长度中赋值(不存在覆盖问题)即可。
此题比较简单,需要注意的是一些细节问题:
- 如果从前往后扫描数组对空格进行替换,为了不覆盖后面内容,势必要先对后面内容进行移位以留足多出的两个字符(%20相较于空格)的位置。对于有n个数据的数组来说,每遇到一个空格,必须移动后面所有的字符,对于有n个空格的数组,时间复杂度就是O(n2)。相率不高。
- 如果再开辟一个新数组来存储新数据,虽不用移位,但是却浪费了额外的空间(O(n))。