转载自https://blog.csdn.net/weixin_37672169/article/details/79979710
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”.
/**
* 将字符串中的空格替换为%20
*/
public class Solution{
/**
* 使用StringBuilder的方法
* @param inputStr 输入的字符串
* @return
*/
public static String replaceSpace(String inputStr) {
if (inputStr == null || inputStr.length() == 0) {
return null;
}
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < inputStr.length(); i++) {
if (inputStr.charAt(i) == ' ') {
strBuilder.append("%20");
} else {
strBuilder.append(inputStr.charAt(i));
}
}
return strBuilder.toString();
}
public static void main(String args[]) {
/**
* 测试用例
*/
String str1 = "We are happy.";
String str2 = " Wearehappy.";
String str3 = "Wearehappy. ";
String str4 = "We are happy .";
String str5 = "Wearehappy.";
String str6 = " ";
String str7 = " ";
String str8 = null;
String str9 = "";
String resultStr = replaceSpace(str1);
System.out.println(resultStr);
}
}
/**
* 将字符串中的空格替换为%20
*/
public class Solution{
/**
*
* @param c
* 输入的带空格的字符数组
* @param length
* 第一个字符到最后一个字符的长度,不是字符数组的长度
* @return
*/
public static String replaceSpace(char[] c, int length) {
// 查询空格的个数
int count = 0;
for (int i = 0; i < length; i++) {
if (c[i] == ' ') {
count++;
}
}
// 重新计算新数组的大小
int newLength = length + count * 2;
// 从尾到头查找
int i = length - 1;
int j = newLength - 1;
while (i >= 0 && j >= i) {
if (c[i] == ' ') {
c[j--] = '0';
c[j--] = '2';
c[j--] = '%';
} else {
c[j--] = c[i];
}
i--;
}
return new String(c);
}
public static void main(String[] args) {
String str = "We are happy .";
int length = str.length();
char[] olderArray = str.toCharArray();
// 为简单起见,我们假设给它一个新的空间,空间的大小足以存下替换后的字符
char[] newArray = new char[100];
for (int i = 0; i < olderArray.length; i++) {
newArray[i] = olderArray[i];
}
String resultStr = replaceSpace(newArray, length);
System.out.println(resultStr);
}
}