Google Interview Question
Software Engineer / DevelopersCountry: United States
public class UniformlyDisplayedTextWithSpace {
public static String insertSpace(String str, int length) {
int len;
if (null == str || str.length() == 0 || (len = str.length()) >= length)
return str;
StringBuilder sb = new StringBuilder();
while (len + str.length() < length) {
for (int i = 0; i < str.length() - 1; i++) {
if (Character.isAlphabetic(str.charAt(i)))
sb.append(str.charAt(i)).append(" ");
else
sb.append(str.charAt(i));
}
sb.append(str.charAt(str.length() - 1));
str = sb.toString();
sb.setLength(0);
}
return str;
}
@Test
public void testInsertSpace() {
String str = "driver";
String newStr = insertSpace(str, 30);
System.out.println(newStr);
}
}
the above program does not work it will fail for "hello" to be expanded to 11 characters. It returns only 9. In the following to check for the right amount of spaces I added '-' instead of whitespace.
public String addSpace(String s, int length){
checkNotNull(s, "Input String cannot be null");
checkArgument(s.length() < length, "Cannot expand input string of "+s.length() + " to require size of " + length);
StringBuilder str = new StringBuilder("");
int addition = length - s.length();
int betweenSpaces = addition / s.length();
int endSpace = (addition % s.length()) + betweenSpaces;
for(int i = 0 ; i < Math.ceil(endSpace / 2.0); i++)
str.append("-");
int i = 0;
while(i < s.length()){
str.append(s.charAt(i));
if(i < s.length() -1) {
for (int x = 0; x < betweenSpaces; x++)
str.append("-");
}
i++;
}
for(int x = 0 ; x < endSpace - Math.ceil(endSpace / 2.0); x++)
str.append("-");
return str.toString();
}
More details.
- Anonymous January 14, 2014