题目
编程写程序,将空格全部替换为”%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);
}
}