题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路解析
这是一套字符串处理的题目,虽然我们有字符串处理的函数,但我们最好不要用那些,自己把这些写出来会更好一点。
方案一(利用自带的函数)
function replaceSpace($str)
{
return str_replace(" ","%20",$str);
}
运行时间:13ms
占用内存:3924k
方案二 (字符串处理)
我们发现找一下规律
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
W | e | a | r | e | h | a | p | p | y | ||||||||
W | e | % | 2 | 0 | a | r | e | % | 2 | 0 | h | a | p | p | y |
从这里我们可以看到当
i 为该字符前面空白的个数
j为该字符所在的位置.
后面的元素向后面移动了 j+i*2
function replaceSpace($str)
{
$len = strlen($str)-1;
$count = 0;
$i=0;
while($i<=$len){
if($str[$i]==" "){
$count++;
}
$i++;
}
var_dump($count);
while($count>0){
if($str[$len]==" "){
$count--;
$str[$len+2*$count]='%';
$str[$len+2*$count+1]='2';
$str[$len+2*$count+2]='0';
}else{
$str[$len+2*$count] =$str[$len];
}
var_dump($str);
$len--;
}
return $str;
}
运行时间:87ms
占用内存:2396k