您的位置:首页 > Web前端

【剑指offer】替换空格

2016-06-12 16:05 316 查看
题目:

将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

分析:

String为不可变类,需要对String进行内容操作时,可以考虑转为char[]或StringBuffer。

(1)操作char[]方式:

需要考虑数组元素移动造成的覆盖,因此考虑从后往前,将字符数组移动到新长度的数组中。

(2)StringBuffer方式:

A、使用可变类StringBuffer的追加append()函数,实现内容分情况追加(字符串内容 或 空格替换字符)。

B、使用repalce()函数,实现内容替换。

实现:

(1)StringBuffer实现:

追加方式:

<span style="font-family:Microsoft YaHei;font-size:14px;">public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null){
return null;
}
StringBuffer sb = new StringBuffer();
char [] chars = str.toString().toCharArray();
for(int i=0;i<chars.length;i++){
if(chars[i]==' '){
sb.append("%20");
}else{
sb.append(chars[i]);
}
}
return sb.toString();
}
}</span>


替换方式:

<span style="font-family:Microsoft YaHei;font-size:14px;">public String replaceSpace(StringBuffer str) {
if(str==null)
{
return null;
}
for(int i=0;i<str.length();i++)
{
char c = str.charAt(i);
if(c==' ')
{
str.replace(i,i+1,"%20");
}
}
String newstr = str.toString();
return newstr;
}</span>


(2)操作char[]实现:

<span style="font-family:Microsoft YaHei;font-size:14px;">public String ReplaceSpace(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[spaceNum*2+len];
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);
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息