题目:请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.”,则输出“We%20are%20happy.”。
package com.www.OfferToSword;
import java.util.Arrays;
public class Solution4_1 {
public String replaceSpace1(String str) {
String strs = new String(str);
return strs.replace(" ", "%20");
}
public String replaceSpace2(String str) {
// String strs = new String(str);
// char[] charArr = str.toCharArray();
int originalLength = str.length();
int numberOfBlank = 0;
// while (charArr[i] != '\0') {
// originalLength++;
// if (charArr[i] == ' ') {
// numberOfBlank++;
// }
// i++;
// }
// for (String item : str)
// if (item == ' ') {
// numberOfBlank++;
// }
for (int i = 0; i < str.length(); i++) {
char s = str.charAt(i);
if (s == ' ') {
numberOfBlank++;
}
}
int newLength = originalLength + 2 * numberOfBlank;
char[] newCharArr = new char[newLength];
int y = newCharArr.length;
// newCharArr = str.toCharArray().clone();
for (int i = 0; i < str.length(); i++) {
newCharArr[i] = str.charAt(i);
}
int x = newCharArr.length;
int indexOfOri = originalLength - 1;
int indexOfNew = newLength - 1;
while (indexOfOri >= 0 && indexOfNew >= indexOfOri) {
if (newCharArr[indexOfOri] == ' ') {
newCharArr[indexOfNew--] = '0';
// indexOfNew--;
newCharArr[indexOfNew--] = '2';
// indexOfNew--;
newCharArr[indexOfNew--] = '%';
// indexOfNew--;
} else {
newCharArr[indexOfNew--] = newCharArr[indexOfOri];
// indexOfNew--;
}
--indexOfOri;
}
return Arrays.toString(newCharArr);
// return newCharArr.toString();
}
public static void main(String[] args) {
String str = "we are family";
Solution4_1 sol = new Solution4_1();
System.out.println(sol.replaceSpace1(str));
System.out.println(sol.replaceSpace2(str));
}
}