请实现一个函数,将一个字符串中的空格替换成“%20”。 例如:当字符串为We Are Happy. 则经过替换之后的字符串为We%20Are%20Happy。
直观的做法就会从头到尾扫描字符串,遇到空格时就做替换。由于是把一个字符替换成了三个字符,所以后面的字符串得整体往后挪动两位。 这时候我们会发现,如果空格的数目过多,就会让问题过于复杂化,时间复杂度也会达到O(n^2)。 但是如果先的得到该字符串(长度假设为n)中空格的数目,假设为m,那么替换后的字符串的长度应该为 n+2*m,这时候申请这样长度的一个数组,从后向前一个字符一个字符的复制,这样时间复杂度就是O(n)。 相信你看到下面的代码就会明白我的意思。
该题目是九度OJ上面的一道题,对应地址为: http://ac.jobdu.com/PRoblem.php?pid=1510 如果你完成了这个算法,就去测试一下看看是否能AC!
新闻热点
疑难解答