您的位置:首页 > 其它

用%20替换字符串中的空格

2016-08-04 00:00 246 查看
摘要: 用%20替换字符串中的空格
如:
given : “we are happy."
return : "we%20are%20happy."

方法一:时间复杂度为O(n^2)

public static String replaceBlank1(String str) {
List<String> list = new ArrayList<>();
String string = "";
for (int i = 0; i < str.length(); i++) {
String s = String.valueOf(str.charAt(i));
list.add(i, s);
}
for (String s : list) {
if (" ".equals(s)) {
s = "%20";
}
string = string + s;
}
return string;
}

这种方法,每替换一个空格,后面的元素都要往后移动,如果字符串的长度比较长的话,要替换的空格较多的话,要移动大量的元素,性能较低;

方法二:时间复杂度为 O(n):

public static String replaceBlank(String string){
int len = string.length();
if (string == null && len <= 0) {
return null;
}
//替换空格后字符串中的长度为
int nLength = numberOfBlank(string) * 2 + len;
char[] temp = new char[nLength];
System.arraycopy(string.toCharArray(), 0, temp, 0, string.toCharArray().length);
int indexofOriginal = len - 1;
int indexofNew = nLength - 1;
while (indexofOriginal >= 0 && indexofOriginal != indexofNew) {
if (temp[indexofOriginal] == ' ') {
temp[indexofNew--] = '0';
temp[indexofNew--] = '2';
temp[indexofNew--] = '%';
} else {
temp[indexofNew--] = temp[indexofOriginal];
}
indexofOriginal--;
}
return charToString(temp);
}
//打印出字符串中空格的个数
private static int numberOfBlank(String string){
int count = 0;
for (int i = 0; i < string.length(); i++) {
String str = String.valueOf(string.charAt(i));
if (" ".equals(str)) {
count ++;
}
}
return count;
}
private static String charToString(char[] c){
String str = "";
for (int i = 0; i < c.length; i++) {
str += c[i];
}
return str;
}

测试:

public static void main(String[] args) {
String str = "we are happy.";
String string = ReplaceBank.replaceBlank1(str);
System.out.println(string);
}

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