45 lines
1.7 KiB
Java
45 lines
1.7 KiB
Java
// Title: Determine if a string is squeezable
|
|
|
|
public class StringSqueezable {
|
|
|
|
public static void main(String[] args) {
|
|
String[] testStrings = new String[] {
|
|
"",
|
|
"\"If I were two-faced, would I be wearing this one?\" --- Abraham Lincoln ",
|
|
"..1111111111111111111111111111111111111111111111111111111111111117777888",
|
|
"I never give 'em hell, I just tell the truth, and they think it's hell. ",
|
|
" --- Harry S Truman ",
|
|
"122333444455555666666777777788888888999999999",
|
|
"The better the 4-wheel drive, the further you'll be from help when ya get stuck!",
|
|
"headmistressship"};
|
|
|
|
String[] testChar = new String[] {
|
|
" ",
|
|
"-",
|
|
"7",
|
|
".",
|
|
" -r",
|
|
"5",
|
|
"e",
|
|
"s"};
|
|
for ( int testNum = 0 ; testNum < testStrings.length ; testNum++ ) {
|
|
String s = testStrings[testNum];
|
|
for ( char c : testChar[testNum].toCharArray() ) {
|
|
String result = squeeze(s, c);
|
|
System.out.printf("use: '%c'%nold: %2d <<<%s>>>%nnew: %2d <<<%s>>>%n%n", c, s.length(), s, result.length(), result);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static String squeeze(String in, char include) {
|
|
StringBuilder sb = new StringBuilder();
|
|
for ( int i = 0 ; i < in.length() ; i++ ) {
|
|
if ( i == 0 || in.charAt(i-1) != in.charAt(i) || (in.charAt(i-1) == in.charAt(i) && in.charAt(i) != include)) {
|
|
sb.append(in.charAt(i));
|
|
}
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
}
|