题目:
将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
String为不可变类,需要对String进行内容操作时,可以考虑转为char[]或StringBuffer。
(1)操作char[]方式:
需要考虑数组元素移动造成的覆盖,因此考虑从后往前,将字符数组移动到新长度的数组中。
(2)StringBuffer方式:
A、使用可变类StringBuffer的追加append()函数,实现内容分情况追加(字符串内容 或 空格替换字符)。
B、使用repalce()函数,实现内容替换。
package com.gpl.offer.jianzhi;
/**
* Created by gpl on 2016/7/19.
*/
public class ReplaceSpace {
public String replaceSpace1(String str){
int len = str.length();
if(str ==null || len == 0)
return null;
int spaceNum = 0;
for(int i=0;i<len;i++){
if(str.charAt(i) == ' ')
spaceNum++;
}
char[] chars = new char[len+spaceNum*2];
for(int i=0,j=0;i<len;i++){
if(str.charAt(i)==' '){
chars[j++] = '%';
chars[j++] = '2';
chars[j++] = '0';
}else{
chars[j++] = str.charAt(i);
}
}
return new String(chars);
}
public String replaceSpace2(String str){
int len = str.length();
if(len == 0 || str == null)
return null;
StringBuilder sb =new StringBuilder();
for(int i=0;i<len;i++){
if(str.charAt(i) == ' ')
sb.append("%20");
else
sb.append(str.charAt(i));
}
return sb.toString();
}
public static void main(String[] args){
ReplaceSpace rs =new ReplaceSpace();
System.out.println(rs.replaceSpace1("I am good boy"));
}
}