[LintCode]スペース置換

5147 ワード

 1 class Solution {
 2 public:
 3     /**
 4      * @param string: An array of Char
 5      * @param length: The true length of the string
 6      * @return: The true length of new string
 7      */
 8     int replaceBlank(char string[], int length) {
 9         // Write your code here
10         if (!length) return 0;
11         int spaces = 0;
12         for (int i = 0; string[i]; i++)
13             if (string[i] == ' ')
14                 spaces++;
15         if (!spaces) return length;
16         int newlen = length + spaces * 2;
17         int pn = newlen - 1, p = length - 1;
18         while (p >= 0 && pn >= 0) {
19             if (string[p] == ' ') {
20                 string[pn--] = '0';
21                 string[pn--] = '2';
22                 string[pn--] = '%';
23                 p--;
24             }
25             else string[pn--] = string[p--];
26         }
27         return newlen;
28     }
29 };