题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

暴力求解:

解题思路,从后向前遍历字符串,遇到空格,需要将空格后面的字符向后移动两位,预留出%20的空间
function replaceSpace($str)
{
// write code here
$len = $oldlen = strlen($str);
for($i = $oldlen - 1; $i >= 0; $i--){
if ($str{$i} == ' ') {//如果等于空格
$len = $len + 2;
for ($j = $len - 1; $j > $i + 2; $j--) {
$str{$j} = $str{$j - 2};
}
$str{$j--} = '0';
$str{$j--} = '2';
$str{$j--} = '%';
}
}
return $str;
}

暴力优化
解题思路:
①、先求出空格的数量
②、从后向前字符串,完成替换
function replaceSpace($str)
{
// write code here
$len = $oldlen = strlen($str);
$backcount = 0;
for($i = $oldlen - 1; $i >= 0; $i--){
if ($str{$i} == ' ') {
$backcount ++;
}
}

if ($backcount == 0) {
    return $str;
} else {
    
    for($i = $len - 1; $i >= 0; $i--) {
        if ($str{$i} != ' ') {
            $str{$i+2*$backcount} = $str{$i};
        } else {
            $backcount--;
            $str{$i+2*$backcount} = '%';
            $str{$i+2*$backcount+1} = '2';
            $str{$i+2*$backcount+2} = '0';
        }
    }
}
return $str;

}