请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
思路:首先找到字符串中所有的字符数,遍历其中有多少个空格,然后重新构建字符串的字符数量,即一个空格字符要替换成三个字符;然后使用新的字符数量创建一个新的字符数组,通过遍历旧的字符数组,判断如果为空格,则给新的字符数组中设置三个字符,如果不是空格字符,则设置原先字符串的字符。
public static String replaceSpace(String str) {
int spaceCount = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ') {
spaceCount++;
}
}
int newLength = str.length() + spaceCount * 2;
char[] str2 = new char[newLength];
for (int i = str.length() - 1; i > 0; i--) {
if (str.charAt(i) == ' ') {
str2[newLength - 1] = '0';
str2[newLength - 2] = '2';
str2[newLength - 3] = '%';
newLength = newLength - 3;
} else {
str2[newLength - 1] = str.charAt(i);
newLength = newLength - 1;
}
}
return new String(str2);
}
public static String replaceSpace1(String str) {
int spaceCount = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ') {
spaceCount++;
}
}
int newLength = str.length() + spaceCount * 2;
int cur = 0;
char[] str2 = new char[newLength];
for (int i = 0; i < str.length(); i++) {
if (cur < newLength) {
if (str.charAt(i) == ' ') {
// cur=2时,经过替换,变成三个字符
str2[cur] = '%';
str2[cur + 1] = '2';
str2[cur + 2] = '0';
// 所以下一次的cur使用的时候就得是5
cur = cur + 3;
} else {
// cur = 0时,取出原字符串中的第0个字符
str2[cur] = str.charAt(i);
cur = cur + 1;
}
}
}
return new String(str2);
}
网友评论