題目
程式設計寫程式,将空格全部替換為”%20”。假設字元串尾部有足夠的空間存放字元串。并且知道字元串的長度
算法
- 掃描兩次
- 第一次掃描有多少空格,計算出所需要的長度
-
第二次掃描開始從反向(從後向前)編輯字元串
http://blog.csdn.net/believejava/article/details/38682361
http://blog.csdn.net/believejava/article/details/38682361
package com.ynu.www.tool;
public class ReplaceBlank {
private static String testString = "hellow new world!";
// 計算字元串中包含的空格個數
public static int getBlankNum(String testString) {
int count = ;
for (int i = ; i < testString.length(); i++) {
String tempString = String.valueOf(testString.charAt(i));
if (tempString.equals(" ")) {
count++;
}
}
return count;
}
// 列印char[]數組
public static void printArray(char[] testArray) {
for (char i : testArray) {
System.out.print(i);
}
System.out.println();
}
// 将字元串空格轉換為20%
public static void replaceAllBlank(String testString) {
if (testString == null || testString.length() <= ) {
return;
}
// 字元數組初始長度
int length = testString.length();
// 字元數組增加長度後
int newLength = newLength = getBlankNum(testString) *
+ testString.length();
char[] tempArray = new char[newLength];
System.arraycopy(testString.toCharArray(), , tempArray, , testString.toCharArray().length);
int indexofOriginal = length - ;
int indexofNew = newLength - ;
System.out.println("未替換空格時的字元串:");
printArray(tempArray);
while (indexofOriginal >= && indexofOriginal != indexofNew) {
if (tempArray[indexofOriginal] == ' ') {
tempArray[indexofNew--] = '%';
tempArray[indexofNew--] = '2';
tempArray[indexofNew--] = '0';
} else {
tempArray[indexofNew--] = tempArray[indexofOriginal];
}
indexofOriginal--;
}
System.out.println("替換空格後的字元串:");
printArray(tempArray);
}
public static void main(String[] args) {
replaceAllBlank(testString);
}
}