用stringbuffer替换字符串的空格
问题:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
- 注意题目是替换原来字符串
- 1.替换字符串2.先确定原字符串中空格数3.设置字符串长度4.从后往前遍历,进行替换
解答:
public class Solution {
public String replaceSpace(StringBuffer str) {
int lengthOld=str.length();
int spaceNum=0;
for(int i=0;i<lengthOld;i++) { //空格个数
if(str.charAt(i)==' ') { //单引号表示字符
spaceNum++;
}
}
int lengthNew=lengthOld+spaceNum*2;
str.setLength(lengthNew);
int indexOld=lengthOld-1;
int indexNew=lengthNew-1;
for(;indexOld>=0 && indexOld<lengthNew;--indexOld) { //&& 短路与 从后往前遍历
if(str.charAt(indexOld)==' ') {
str.setCharAt(indexNew--, '0');
str.setCharAt(indexNew--, '2');
str.setCharAt(indexNew--, '%');
}else {
str.setCharAt(indexNew--, str.charAt(indexOld));
}
}
return str.toString();
}
}