JAVA
java 获取 i 字符位置的值 str.charAt(i)
设置 i位置的值:str.setCharAt(i,’ ');
public class Solution {
public String replaceSpace(StringBuffer str) {
int count=0;
for(int i=0;i<str.length();i++)
if(str.charAt(i)==' ')
count++;
int indexold = str.length()-1; //indexold为为替换前的str下标
int newlength = str.length() + count*2;//计算空格转换成%20之后的str长度
int indexnew = newlength-1;//indexold为为把空格替换为%20后的str下标
str.setLength(newlength);//使str的长度扩大到转换成%20之后的长度,防止下标越界
for(;indexold>=0 && indexold<newlength;--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();
}
}
C++:
(1)获取i位置的字符 直接就str[i]
class Solution {
public:
void replaceSpace(char *str,int length) {
int count =0;
int originalLength=0;
for(int i =0;i<length;i++)
if(str[i]==' ')
count++;
originalLength;
int newlength = originalLength+2*count;
if(newlength>length)
return ;
for(int i = length-1;i>=0,count>0;i--){
if(str[i]!=' ')
str[i+2*count]=str[i];
else{
str[i+2*count]='0';
str[i+2*count-1]='2';
str[i+2*count-2]='%';
--count;
}
}
}
};