class Solution {
public String replaceSpace(String s) {
//把字符串中的空格替换为%20;
//首先把字符串转换为字节
//通过遍历,将字符串转换为字节,然后当遍历到空格的时候,用%20代替
//需要开辟额外的空间
char[] array = new char[s.length*3];
int size = 0;
//边遍历,边转换
for(int i=0;i<s.length;i++){
//将每一个元素都转换为字节
char c=s.charAt(i);
//如果字节为空,那么就代替
if(c==''){
array[size++] = '%';
array[size++] = '2';
array[size++] = '0';
}else{
array[size++] = c;
}
}
String newStr = new String(array,0,size);
return newStr;
}
}
解法二
解题思路
善用Java中的StringBuilder
首先得先明白String、StringBuffer、StringBuilder的区别:
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
StringBuilder类也代表可变字符串对象。
实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。
不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。
所以有StringBuilder,我们就可以在一次for循环中直接判断是否为空格然后直接操作字符串。
append():将各种数据类型变量的字符串形式追加到当前序列中
String.valueOf():由 基本数据型态转换成 String
链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof/solution/jian-zhi-offer-05-ti-huan-kong-ge-by-mam-v7di/
参考链接:
代码随想录