import CtCILibrary.AssortedMethods; public class Question { // Assume string has sufficient free space at the end public static void replaceSpaces(char[] str, int trueLength) { int numberOfSpaces = 0, index, i = 0; for (i = 0; i < trueLength; i++) { if (str[i] == ' ') { numberOfSpaces++; } } index = trueLength + numberOfSpaces * 2; /* if there are excess spaces, add a null character, which indicates that the * spaces after that point haven't been replaced with %20. */ if (trueLength < str.length) str[trueLength] = '\0'; for (i = trueLength - 1; i >= 0; i--) { if (str[i] == ' ') { str[index - 1] = '0'; str[index - 2] = '2'; str[index - 3] = '%'; index = index - 3; } else { str[index - 1] = str[i]; index--; } } } public static int findLastCharacter(char[] str) { for (int i = str.length - 1; i >= 0; i--) { if (str[i] != ' ') { return i; } } return -1; } public static void main(String[] args) { String str = "Mr John Smith "; char[] arr = str.toCharArray(); int trueLength = findLastCharacter(arr) + 1; replaceSpaces(arr, trueLength); System.out.println("\"" + AssortedMethods.charArrayToString(arr) + "\""); } }