05替换空格
题目描述
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
输入输出
输入:s = “We are happy.”
输出:“We%20are%20happy.”
解决方案
- 直接替换
return s.replace(" ","%20");
不符合题意,题目想说的是用char数组怎么实现
- 双指针
先计算空格数量
创建一个新数组容量加上空格替换字符串的长度
p1指向字符串尾部
p2指向数组尾部
从后往前扫描字符串
public static String replaceSpace(String s) {
char[] oldS = s.toCharArray();
int count = 0;
//计算有多少个空格
for(Character c:oldS){
if(c==' ') count++;
}
//数组生成则是原长度+空格数*2
char[] newS = new char[s.length()+count*2];
//指针p1指向原数组尾部,指针p2指向新数组尾部
int p1=oldS.length-1,p2=newS.length-1;
//遍历完数组
while (p2>=0){
//如果遇到空格则粘贴%20
if(oldS[p1]==' '){
//遇到则粘贴
p1--;
newS[p2--]='0';
newS[p2--]='2';
newS[p2--]='%';
}else{
//如果没遇到则直接复制
newS[p2--]=oldS[p1--];
}
}
return String.valueOf(newS);
}
举一反三
两个排序数组A1和A2,A1有足够空间容纳A2,实现函数将A2插入到A1中去,并且数字是排序的
三个指针
p1指向A1尾巴,p2指向A2尾巴,p3指向A1数组中加A2下标处
同时从后往前比较