nowcode
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
nowcode
参考
package 剑指offer;
/**
* @author: xingt mym_74@163.com
* @date: 2019/10/27, 13:58
* @version: 1.0
*/
/**
* 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),
* 因此当遍历到一个空格时,需要在尾部填充两个任意字符。
* 令 a 指向字符串原来的末尾位置,b 指向字符串现在的末尾位置。
* a 和 b 从后向前遍历,当 a 遍历到一个空格时,就需要令 b 指向的位置依次填充 02%(注意是逆序的),否则就填充上 P1 指向字符的值。
* 从后向前遍是为了在改变 b 所指向的内容时,不会影响到 a 遍历原来字符串的内容。
*/
public class replaceSpace {
public String replaceSpace(StringBuffer str){
// a是原始字符串的尾部
int a = str.length() -1 ;
for(int i=0;i <= a ; i++){
if(str.charAt(i)==' ') {
//因为一个空格,要替换成3个字符,所以需要在尾部添加2个任意字符
str.append(" ");
}
}
//b是新字符串的尾部
int b = str.length() -1;
while(a>=0 && a<b ){
char c = str.charAt(a--);
if(c ==' '){
str.setCharAt(b--,'0');
str.setCharAt(b--,'2');
str.setCharAt(b--,'%');
}else{
str.setCharAt(b--,c);
}
}
return str.toString();
}
}