题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
最开始想到的思路是从头到尾遍历字符串,遇到字符串即替换,并插入%20,但字符串插入需要将后面的所有字符后移,算法复杂度较高。为优化时间复杂度,可以先统计出
替换空格后的字符串长度,然后从后到前插入。
代码:
1 | // 从前往后 |
复杂度分析:
从前往后:
时间复杂度:
O(n**2)。
空间复杂度:
O(1)。
从后往前:
时间复杂度:
O(n)。
空间复杂度:
O(1)。
总结:
在合并数组或者字符串时,如果从前往后需要重复移动后面数字,可以考虑从后往前进行合并。这样能减少数字移动的次数,大大增加效率。