设计一种方法,将一个字符串中的所有空格替换成
%20
。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。
注意事项
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
样例
对于字符串
"Mr John Smith"
, 长度为13
替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith"
,并且把新长度17
作为结果返回。
挑战
在原字符串(字符数组)中完成替换,不适用额外空间
注意
本题有个前提是字符数组长度远远大于字符串长度
代码
public class Solution {
/*
* @param string: An array of Char
* @param length: The true length of the string
* @return: The true length of new string
*/
public int replaceBlank(char[] string, int length) {
if (string == null || length == 0) {
return 0;
}
int num = 0;
for (int i = 0; i < length; i++) {
if (string[i] == ' ') {
num++;
}
}
int newLength = length + 2 * num;
int j = 1;
for (int i = length - 1; i >= 0; i--) {
if (string[i] != ' ') {
string[newLength - j] = string[i];
j++;
} else {
string[newLength - j] = '0';
j++;
string[newLength - j] = '2';
j++;
string[newLength - j] = '%';
j++;
}
}
return newLength;
}
}
牛客网版
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution {
public String replaceSpace(StringBuffer str) {
if (str == null || str.length() == 0) {
return null;
}
int length = str.length();
int count = 0;
for (int i = 0; i < length; i++) {
if (str.charAt(i) == ' ') {
count++;
}
}
int newlength = length + count * 2;
int j = 1;
for (int i = length - 1; i >= 0; i--) {
if (str.charAt(i) != ' ') {
str.setCharAt(newlength - j, str.charAt(i));
j++;
} else {
str.setCharAt(newlength - j, '0');
j++;
str.setCharAt(newlength - j, '2');
j++;
str.setCharAt(newlength - j, '%');
j++;
}
}
return str.toString();
}
}
需要注意两点:
- StringBuffer类中设定值用 setCharAt() 方法
- 新的字符串需要扩容
网友评论