剑指offer 05.替换空格
class Solution {
public String replaceSpace(String s) {
//1.计算空格数
int countSpace = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' '){
countSpace++;
}
}
//2.给对应空格数补足空格,原字符串一个空格需要再补两个空格
StringBuilder str = new StringBuilder(s);
while (countSpace > 0){
str.append(" ");
countSpace--;
}
//3.用双指针,left从原字符串末尾开始遍历,没碰到空格就直接赋值,碰到空格就让right移动赋值
int right = str.length()-1;
for (int left = s.length()-1; left >= 0; left--) {
if (str.charAt(left) != ' '){
str.setCharAt(right--,str.charAt(left));
}else{
str.setCharAt(right--,'0');
str.setCharAt(right--,'2');
str.setCharAt(right--,'%');
}
}
return str.toString();
}
}
StringBuilder中setCharAt的用法:
public void setCharAt(int index, char ch)