The idea is to first count how many spaces are there in the string, then allocate a char array of appropriate size and fill it up correctly.
You can check my Gist for the code (replaceSpace) with tests:
public static String replaceSpace(String s){
if(s == null || s.length() == 0) return null;
int space_count = 0;
char c;
//count how many white spaces we have
for(int i = 0; i < s.length(); i++){
c = s.charAt(i);
if(c == ' ') space_count++;
}
if(space_count == 0) return s;
//allocate space for new string replacement. CAREFUL: we replace 1 char with 3 so we need 2 extra spaces!
char[] res = new char[s.length() + space_count * 2];
//prepare result string. CAREFUL: can't use same index otherwise we skip characters in either string or char[]
for(int i = 0, j = 0; j < s.length(); i++, j++){
c = s.charAt(j);
if(c == ' '){
res[i] = '%';
res[++i] = '2';
res[++i] = '0';
}
else res[i] = c;
}
return new String(res);
}
No comments:
Post a Comment
With great power comes great responsibility