替换空格
问题描述
力扣链接
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
解决方案
暴力搜索,后移
通过循环整个字符串,每找到一个空格,替换成“%20”,字符串后面的字符往后移动3位。时间复杂度O(n2)。方法不好。
双指针法(自编码)
1:先找到字符串(s1)中所有的空格数,这样就能直到替换后字符串的长度(s2),s2.length() = s1.length() + count*2;
2:从s1字符串的末尾位字符开始判断是否为空格,如果是,从后往前向s2字符串中写入“%20”,s2的下标先前移动三位,s1的下标向前移动一位;如果不是,将字符从s1复制到s2,下标都前移一位。
3:如果两个下标相等,说明s1字符串前面已经没有空格了。直接将前面相同的字符复制即可。
class Solution {
public String replaceSpace(String s) {
int count = 0; //空格数量计数器
//统计空格的数量
String s1 = s;
while(s1.contains(" ")){
s1 = s1.substring(s1.indexOf(" ")+1);
count++;
}