您的位置:首页 > 其它

请编写一个方法,将字符串中的空格全部替换为“ ”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。

2017-05-29 16:47 1431 查看
请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。

给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。

测试样例:
"Mr John Smith”,13

返回:"Mr%20John%20Smith"

”Hello  World”,12

返回:”Hello%20%20World”
方法1:直接调用String类的方法replaceAll()
import java.util.*;

public class Replacement {
public String replaceSpace(String iniString, int length) {
String s =iniString.replaceAll(" ","%20");
return s;
}
}

方法2:新建一个数组,通过charAt(i)遍历字符串,如果不是空格,数组中对应的值为charAt(i),如果说空格则写入%20
import java.util.*;

public class Replacement {
public String replaceSpace(String iniString, int length) {
int count=0;
for(int i=0;i<iniString.length();i++){
if(iniString.charAt(i)==' '){
count++;	    		//计算空格数
}
}
char s[]=new char[iniString.length()+2*count];//算出数组所需大小
int j=0;
for(int i=0;i<iniString.length();i++){
if(iniString.charAt(i)==' '){
s[j++]='%';
s[j++]='2';
s[j++]='0';
}
else s[j++]=iniString.charAt(i);
}
return String.valueOf(s);
}
}

方法3:将字符串放在单个数组中,然后通过替换后坐标后移的特性将其从后往前遍历然后替换
(1)首先遍历原字符串,找出其中的空格数量
(2)根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。
(3)设置两个指针i和j分别指向原字符串和新字符串的末尾位置。
(4)如果i指向内容不为空格,那么将内容赋值给j指向的位置,如果i指
向为空格,那么从j开始赋值“02%”
import java.util.*;

public class Replacement {
public String replaceSpace(String iniString, int length) {
int count=0;
for(int i=0;i<iniString.length();i++){
if(iniString.charAt(i)==' '){
count++;
}
}
char str[]=new char[iniString.length()+2*count];
for(int i=0;i<iniString.length();i++){
str[i]=iniString.charAt(i);
}
int i=iniString.length()-1;
int j=iniString.length()+2*count-1;
while(i>=0&&j>=0){
if(str[i]!=' ')
str[j--]=str[i--];
else{
str[j--]='0';
str[j--]='2';
str[j--]='%';
i--;
}

}
return String.valueOf(str);
}
}
将字符串放入数组时选择使用charAt(i)遍历放入数组而不是使用String.toCharArray()的原因是,String.toCharArray()返回的数组长度和字符串长度大小相同,
放入替换后的字符串时会发生数组下标越界

方法4:运用两个数组,和方法三类似
import java.util.*;

public class Replacement {
public String replaceSpace(String iniString, int length) {
int count=0;
char s[]=iniString.toCharArray();
for(int i=0;i<s.length;i++){
if(s[i]==' '){
count++;
}
}
char str[]=new char[s.length+2*count];
int j=str.length-1;
int i=s.length-1;
while(i>=0&&j>=0){
if(s[i]!=' ')
str[j--]=s[i--];
else{
str[j--]='0';
str[j--]='2';
str[j--]='%';
i--;
}

}
return String.valueOf(str);
}
}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐