空格替换

Posted 573583868wuy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空格替换相关的知识,希望对你有一定的参考价值。

描述

设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。

你的程序还需要返回被替换后的字符串的长度。

样例

对于字符串"Mr John Smith", 长度为 13

替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 17 作为结果返回。

挑战

在原字符串(字符数组)中完成替换,不适用额外空间

 

 1 <?php
 2 
 3 /**
 4  * 方法一 由于php数组特殊的数据结构导致处理起来比较方便
 5  */
 6 function solution1($str)
 7 {
 8     $len = strlen($str);
 9     $new_str = ‘‘;
10     for($i=0; $i<$len; $i++)
11     {
12         if($str[$i] != ‘ ‘)
13         {
14             $new_str .= $str[$i];
15         } else {
16             $new_str .= ‘%20‘;
17         }
18     }
19     return $new_str;
20 }
21 
22 $str = solution1(‘Mr John Smith‘);
23 echo $str . ‘----------‘ . strlen($str);
24 
25 /**
26  * 方法二 强类型语言的处理方式
27  * 1.先确定有多少个空格
28  * 2.非空格字符往后移,空格字符用%20填充
29  */
30 function solution2($arr)
31 {
32     $len = count($arr);
33     $count = 0;//记录有多少个空格
34     for($i=0; $i<$len; $i++)
35     {
36         if($arr[$i] == ‘ ‘)
37         {
38             $count++;
39         }
40     }
41     if(0 == $count)
42     {
43         return $arr;//字符串数组中没有空格
44     }
45     for($i=$len-1;$i>0;$i--)
46     {
47         if($arr[$i] != ‘ ‘)
48         {
49             $index = $i + $count * 2;
50             $arr[$index] = $arr[$i];
51         } else {
52             $count--;
53             $arr[$i + $count * 2] = ‘%‘;
54             $arr[$i + $count * 2 + 1] = ‘2‘;
55             $arr[$i  + $count * 2 + 2] = ‘0‘;
56         }
57     }
58     return $arr;
59 }
60 $arr = [‘M‘,‘r‘,‘ ‘, ‘J‘,‘o‘,‘h‘,‘n‘,‘ ‘,‘S‘,‘m‘,‘i‘,‘t‘,‘h‘];
61 $str = solution2($arr);
62 echo "<pre>";print_r($str) . ‘----------‘ . count($str);

 

以上是关于空格替换的主要内容,如果未能解决你的问题,请参考以下文章

如何从主要活动中替换片段

用片段替换时操作栏向下移动

如何在android studio中用另一个片段替换一个片段

用片段替换某些东西

试图替换片段,但它一直显示相同的片段

正则表达式替换markdown文件代码块标记中的所有空格