字符串替换空格
Posted 清浅岁月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串替换空格相关的知识,希望对你有一定的参考价值。
题目:实现一个函数,把字符串中的每一个空格替换为“%20”。
public class ReplaceBlack
public static void main(String[] args)
char[] result = replaceBlack("how are you!");
if (result != null)
printchar(result);
// 替换空格
public static char[] replaceBlack(String originstr)
char[] testchar;
if (originstr.length() > 00 && originstr != null)
int oldlength = originstr.length();
int newlength = getBlackCount(originstr) * 2 + oldlength;//一个字符串变成了3个多了2个
testchar = new char[newlength];
int indexOfold = oldlength - 1;
int indexOfnew = newlength - 1;
System.arraycopy(originstr.toCharArray(), 0, testchar, 0,
originstr.toCharArray().length);
System.err.println("未替换空格时的字符串");
printchar(testchar);
System.err.println("替换空格后的字符串");
while (indexOfold >= 0 && indexOfold != indexOfnew)
if (testchar[indexOfold] == ' ')
testchar[indexOfnew--] = '0';
testchar[indexOfnew--] = '2';
testchar[indexOfnew--] = '%';
else
testchar[indexOfnew--] = testchar[indexOfold];
indexOfold--;
else
return null;
return testchar;
public static int getBlackCount(String str)
int count = 0;
for (int i = 0; i < str.length(); i++)
String teststr = String.valueOf(str.charAt(i));
if (teststr.equals(" "))
count++;
return count;
public static void printchar(char[] testchar)
for (int i = 0; i < testchar.length; i++)
System.err.print(testchar[i]);
System.err.println();
当初我是从前往后弄得,时间复杂度为O(n的平方),看了后面的时间复杂度为O(n)的解法,算法的优化无非就是时间复杂度和空间复杂度两个方向考虑,或者取舍平衡。从前往后,遇到空格,用”%”将空格替换,之后移动后面的字符,将”2”放入,再移动后面所有的字符串,将”0”放入,再移动后面所有的字符串。从后往钱就不会出现这种现象,一次成型。注意做之前要考虑清楚这个数据后边是否有足够的空间,是在原数组处理还是额外的数上处理。
以上是关于字符串替换空格的主要内容,如果未能解决你的问题,请参考以下文章