替换空格
替换空格
https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey
参数为String型,利用StringBuffer
public String replaceSpace(String s) {
if(s.length() == 0)
return "";
StringBuffer sb = new StringBuffer();
int n = s.length();
for(int i = 0; i < n; i++){
if(s.charAt(i) == ' ')
sb.append("%20");
else sb.append(s.charAt(i));
}
return sb.toString();
}
参数为StringBuffer型
/**
不使用StringBuffer,在原来的上面进行扩容
*/
public String replaceSpace(StringBuffer s) {
if(s.length() == 0)
return "";
int cnt = 0; //空格的数量
int oldLen = s.length();
for(int i = 0; i < oldLen; i++){
if(' ' == s.charAt(i))
cnt++;
}
int newLen = oldLen+cnt*2; //字符串的新长度
int newIndex = newLen-1; //扩容后的字符串的最后一个位置
s.setLength(newLen);
for(int i = oldLen-1; i >= 0; i--){
if(' ' == s.charAt(i)){
s.setCharAt(newIndex--,'0');
s.setCharAt(newIndex--,'2');
s.setCharAt(newIndex--,'%');
}else{
s.setCharAt(newIndex--,s.charAt(i));
}
}
return s.toString();
}
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~


