/**
* 剑指offer 第4题 替换空格
* 特点:1、先扫描串中的空格数,计算好替换后的长度
* 2、使用双指针,从后面开始向前替换,避免从前开始每次替换后就要移动后面的所有的数据
* 测试用例:特殊:有多个空格
* 错误:数组长度不够,字符串为空
*
*/
package javaTrain;
public class Offer4 {
public static void main(String[] args) {
String a = "Hello I am Daisy Dong!";
replaceBlack(a);
}
public static void replaceBlack(String a) {
if(a == null) return;
int len = 0;
int count = 0; //空格的数量
char[] str = a.toCharArray();
len = str.length;
for(char s : str) {
if(s == ' ') ++count;
}
//使用双指针进行替换和后移
int p1 = len - 1;
len += count*2;
int p2 = len - 1;
char[] str1 = new char[len];
while(p1 >= 0) {
if(str[p1] == ' ') {
str1[p2] = '0';
str1[--p2] = '2';
str1[--p2] = '%';
}
else {
str1[p2] = str[p1];
}
--p2;
--p1;
}
System.out.println(str1);
}
}
【剑指offer】第四题 替换空格
最新推荐文章于 2024-02-10 19:25:16 发布