Replace Blank

Problem description

将字符串中每个空格替换成“can”

Examples

1
2
3
Example 1:
Input:sdf sddsf sef
Output:sdfcansddsfcansef

Solution

  首先遍历一遍数组得到空格数目。每替换一个空格,字符串长度增加2.替换后的字符串长度为原来的长度乘以2.
  从字符串的末尾开始向头移动复制替换。indexOfOriginal指向原始字符串的末尾,indexOfNew指向替换之后的字符串末尾。遇到空格时,indexOfNew前插入can.indexOfOrigin–;否则将indexOfOriginal所指向的值复制进入indexOfNew指向位置。直至indexOfOriginal < 0 或者indexOriginal >= indexOfNew结束。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void ReplaceBlank(char[] s, int length) {
if (s == null && s.length == 0) {
return;
}
int numberOfBlank = 0;
for (int i = 0; i < length; i++) {
if (s[i] == ' ') {
numberOfBlank++;
}
}
int newLength = length + numberOfBlank * 2;
if(newLength > length){
  return;
}
int indexOfOriginal = length;
int indexOfNew = newLength;

while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) {
if (s[indexOfOriginal] == ' ') {
s[indexOfNew--] = 'n';
s[indexOfNew--] = 'a';
s[indexOfNew--] = 'c';
} else {
s[indexOfNew--] = s[indexOfOriginal];
}
--indexOfOriginal;
}
System.out.println("");
}
文章目录
  1. 1. Problem description
    1. 1.1. 将字符串中每个空格替换成“can”
  2. 2. Examples
  3. 3. Solution
  4. 4. Code
|