题目要求:请实现一个函数,把字符串 s 中的每个空格替换成 “%20”
示例1:
输入:s = "We are happy."
输出:s = "We%20are%20happy."
class Solution{
public String replaceSpace(String s){
}
}
问题:不懂public 那行的意思,目前见过的只有main。
Solution的类,提供了一个接口,形参是一个String型的s
--------------------------------------------------------
思路:把输入分成好几部分,然后输出的时候用%20字符串去代替“ ”。
问题:力扣不用指定输入,且最后需要返回值(盲猜和public那行代码有关)
总结:只写方法返回就行
-------------------------------------------------------
别人的思路:
1、正则替换,调用replace()方法
方法:public String replace(char searchChar , char newChar)
说明:searchChar为原字符;newChar为新字符
class Solution{
public String replaceSpace(String s){
return s.replace(" ","%20");
}
}
2、替换可看成1个字符--3个字符,采用字符数组【官方答案】
分析:创建一个新数组,长度为s的三倍。初始化size=0,表示替换后的字符串长度。从左到右遍历数组,遇到空格则用三个字符代替,size加3;否则size加1。
class Solution {
public String replaceSpace(String s) {
int length = s.length();
char[] array = new char[length * 3];
int size = 0;
for (int i = 0; i < 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;
}
}
- charAt(i)函数是将字符串中第i个索引位置的字符返回出来。(索引从0开始)
eg: String h = "world"; char c = h.charAt(1) 结果为:o
- String(char[] value, int offset, int count)
分配一个新的String,这个String是char[] value字符数组的一个子数组。
value--字符源的数组 offset---初始偏移量 count---长度
3、创建StringBuilder存放新字符串,把s转换成的char数组遍历,每个字符逐个添加到StringBuilder中,遇到空格换成%20 【具体待补充】
public String replaceSpace(String s) {
StringBuilder stringBuilder = new StringBuilder();
char[] chars = s.toCharArray();
for (char c : chars) {
if (c == ' ') {
stringBuilder.append("%20");
} else {
stringBuilder.append(c);
}
}
return stringBuilder.toString();
}
-----------------------------------------------------
小知识:
1、引号与字符串
单引号----char类型; 双引号----String类型。
2、在字符串 “”中添加“”
所添加的双引号前加\,如:String s = "Hello! \"worid\"";
3、StringBuffer
还没学习到,待补充