题目:请实现一个函数,把字符串中的每个空格替换成为“%20”。例如输入“We are happy”,则输出“We%20are%20happy.”

在网络编程中,如果URL参数中含有特殊字符,如空格,'#'等,则可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在'%'后面跟上ASCII码的两位16进制的表示。比如空格的ASC码是32,即16进制的0x20,因此空格被替换为"%20".

1.时间复杂度为n的平方      从头开始把每个空格替换成“%20”,每到一个空格,需要把其后面的内容统统后移  

 

 2.先遍历一遍字符串,统计出字符串中空格的总数并可以根据此计算出替换后的字符串的总长度。每替换一个空格,长度增加2,因此替换后字符串的长度等于原来的长度加上2乘以空格的数目。

然后从字符串的后面开始复制和替换。准备两个指针p1,p2,p1指向原始字符串的末尾,而p2指向替换之后的字符串的末尾。向前移动指针p1,逐个把它指向的字符复制到p2指向的位置,直到碰到第一个空格为止。碰到空格后,p1向前移动1格,在p2之前插入字符串“%20”,然后再把p2向前移动3格。以此类推直到p1和p2指向同一个位置标示空格都替换完毕。

算法效率为O(n)

 

 

 

 剑指offer代码: