/**
* 请实现一个函数,将字符串的每个空格替换为"%20"。
* 例如输入"We are happy",则输出"We%20are%20happy."。
* 要求在原有字符串上进行修改。
*
* 测试用例
* 1.字符串中无空格
*.2.字符串中含有空格(连续空格,空格在首尾等)
*.3.字符串为空字符串或者为null
*
* 要求时间复杂度为O(n)
*/
public class ReplaceBank {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("we are happy.");
System.out.println(replaceBank(str));
}
private static String replaceBank(StringBuffer str){
if (str == null) {
System.out.println("输入错误!");
return null;
}
int length = str.length();
//使用双指针,两个指针重叠时复制结束
int indexOfOriginal = length - 1;//字符串原始长度的末尾指针
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ')
length += 2;
}
str.setLength(length);
int indexOfNew = length-1;//字符串新长度的末尾指针
while (indexOfNew > indexOfOriginal){
if (str.charAt(indexOfOriginal) != ' '){
str.setCharAt(indexOfNew--,str.charAt(indexOfOriginal));
}else {
str.setCharAt(indexOfNew--,'0');
str.setCharAt(indexOfNew--,'2');
str.setCharAt(indexOfNew--,'%');
}
indexOfOriginal--;
}
return str.toString();
}
}
result:
we%20are%20happy.
网友评论