题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
老实说,看到这个题目想到的就是字符串替换,但是面试题肯定不是这么简单的,那么怎么在原字符串上进行高效的替换呢?我们的字符串替换,主要的消耗是在移位上,每遇到一个空格,后面的字符串就往后移位,那么之前的移位都没有作用了。我们知道字符串的长度,知道替换字符串的长度,如果还知道空格的多少,那么这个字符串的长度就知道了。知道长度之后,只需要把数据放到响应的位置就可以了。
步骤:
1. 遍历字符串,统计出空格数量
2. 再遍历一次,完成替换
代码实现
普通解法,直接替换字符串
public static string ReplaceSpaceForSimple(stringstr)
{return str.Replace(" ", "%20");
}
精妙解法数据移位
public static string ReplaceSpace(stringstr)
{int count = 0;foreach (var item instr)
{if (item == ' ')
{
count++;
}
}int oLength =str.Length;int length = oLength + count * 2; //