替换空格
Posted 2018-05-9-ygk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换空格相关的知识,希望对你有一定的参考价值。
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%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;
}
以上是关于替换空格的主要内容,如果未能解决你的问题,请参考以下文章