no.05: 请实现一个函数,把字符串中的每个空格替换成"%20"
例如输入"We are happy",则输出"We%20are%20happy"
public class NO05 {
public static void main(String[] args) {
String string = new String("We are happy");
char[] charArray = string.toCharArray();
int length = charArray.length;
NO05A no05A = new NO05A();
System.out.println(no05A.change(charArray, length));
}
}
class NO05A{
char[] change(char[] chars, int length){
int count = 0;
for (int i = 0; i < length; i++){
if (chars[i] == ' '){
count++;
}
}
if (count == 0){
return chars;
}
int i = length - 1;
int j = (length + count * 2) - 1;
char[] newchars = new char[length + count * 2];
for (; i >= 0 && j >= 0; i--){
if (chars[i] != ' '){
newchars[j] = chars[i];
j--;
}else{
newchars[j] = '0';
newchars[j - 1] = '2';
newchars[j - 2] = '%';
j -= 3;
}
}
return newchars;
}
}
思路:空格‘ ’替换成%20 ,一个字符变成了三个,所以要进行字符集长度的扩展。
如果从前往后复制每个数字,则需要重复移动数字多次,时间复杂度为O(n^2)
所以可以考虑从后往前复制,可以减少移动的次数,时间复杂度为O(n),大大提高了效率。