版权声明:转载请标明出处 https://blog.csdn.net/easy_purple/article/details/83004850
题目:
请实现一个函数,把字符串中的每个空格替换成%20.例如,输入“We are happy.”,则输出“we%20are%20happy.”。
思路:
从前往后复制会导致O(n2)的时间开销,而计算好空间,从后往前复制则只需O(n)的时间开销。
先遍历一遍数组,计算出空格的个数。创建一个新数组,大小是原来数组大小再加上空格个数乘以2.声明两个下标,分别指向新旧数组的末尾,依次复制,遇到空格则处理空格。
代码:
package item1_10;
public class item_4_replaceSpace {
public static char[] item_4_replaceSpace(String str) {
char[] chars = str.toCharArray();
int spaceCount = 0;
for (char cha : chars) {
if (cha == ' ')
spaceCount++;
}
char[] newChar = new char[chars.length + spaceCount * 2];
int i=chars.length-1;
int j=newChar.length-1;
while(i!=j){
while(chars[i]!=' '){
newChar[j--]=chars[i--];
}
newChar[j--]='0';
newChar[j--]='2';
newChar[j--]='%';
i--;
}
for(int x=i;x>=0;x--){
newChar[x]=chars[x];
}
return newChar;
}
public static void main(String[] args) {
String str="hello world I love you";
System.out.println(new String(item_4_replaceSpace(str)));
}
}