剑指Offer面试题5 替换空格
2018-11-14 本文已影响0人
Yue_Q
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
//先计算数组大小,从后往前赋值
public class Solution {
public String replaceSpace(StringBuffer str) {
int strLen = str.length();
if (strLen ==0) return "";
int speaceNum = 0;
for (int i=0 ; i<strLen ;i++)
{
if(str.charAt(i) == ' '){
speaceNum++;
}
}
int newStrLength = strLen + speaceNum * 2;//计算新数组长度
str.setLength(newStrLength);
int p1 = strLen - 1; //下标从0开始,指向老数组的指针
int p2 = newStrLength -1; //下标从0开始,指向新数组的指针
while (p1!=p2)//如果指针相遇,则完成
{
if(str.charAt(p1)!=' '){
str.setCharAt(p2,str.charAt(p1));// 新指针位置赋值
p2--;
}else{// 赋值 %20
str.setCharAt(p2--,'0');
str.setCharAt(p2--,'2');
str.setCharAt(p2--,'%');
}
p1--;
}
return str.toString();
}
}