本人新手为了面试互联网公司,将刷题做一个记录以及总结,方便之后学习!!
第3道问题 剑指offer 05 为一道简单题
连接:力扣
力扣
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
1.自己思路
1.直接替换字符串中的空格利用replace函数
class Solution {
public String replaceSpace(String s) {
String b=s.replaceAll(" ","%20");//需要构建一个新的字符串或者,直接返回
return b;
}
}
2.新建一个容器,存储字符串,利用空格来替换“%20”。
class Solution {
public String replaceSpace(String s) {
int n = s.length();
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++){
if(s.charAt(i)==' '){
sb.append("%20");
}else{
sb.append(s.charAt(i));
}
}
return sb.toString();//这里挺关键的,需要转化从字符串形式
}
}
结果:
2.官方思路
构建一个3倍长度的char[],利用char[]最后转化成String.
class Solution {
public String replaceSpace(String s) {
int n = s.length();
char[] c = new char[n*3];
int count=0;
for(int i=0;i<n;i++){
if(s.charAt(i)==' '){
c[count++]='%';
c[count++]='2';
c[count++]='0';
}else{
c[count++]=s.charAt(i);
}
}
return new String(c,0,count);
}
}
结果:
总结:
1.StringBuilder 转化 String 需要 toString
2.字符数组转化成String
new String(char[],0,end)