题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
九度:http://ac.jobdu.com/problem.php?pid=1510
时间复杂度:0( n )
package com.offer.chapter_2;
import java.util.Scanner;
/**
* @author hadoop
* 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
*/
public class Interviews_4 {
public static void replaceAllBlack(char[] strs, int blackNum, int i, int j) {
for(int k =blackNum; k > 0 ;) {
if(strs[j] == ' ') {
strs[i--] = '0';
strs[i--] = '2';
strs[i--] = '%';
j --;
k --;
} else {
strs[i--] = strs[j--];
}
}
}
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String string;
while(scanner.hasNextLine()) {
string = scanner.nextLine();
int blackNum = 0;
// 计算空格数量
for(int i=0; i<string.length(); i++) {
if(string.charAt(i) == ' ') {
blackNum ++;
}
}
// 开辟字符串数组长度
char[] strs = new char[string.length() + blackNum * 2];
System.arraycopy(string.toCharArray(), 0, strs, 0, string.length());
// 模拟假设原数组转换,且0(n)时间复杂度
int i = strs.length - 1;
int j = string.length() - 1;
replaceAllBlack(strs, blackNum, i, j);
for(int k =0; k<strs.length; k++) {
System.out.print(strs[k]);
}
System.out.println();
}
}
}