RosettaCodeData/Task/Determine-if-a-string-is-squeezable/Groovy/determine-if-a-string-is-squeezable.groovy
2023-07-01 13:44:08 -04:00

33 lines
1.5 KiB
Groovy

class StringSqueezable {
static void main(String[] args) {
String[] testStrings = [
"",
"\"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 = [" ", "-", "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 input, char include) {
StringBuilder sb = new StringBuilder()
for (int i = 0; i < input.length(); i++) {
if (i == 0 || input.charAt(i - 1) != input.charAt(i) || (input.charAt(i - 1) == input.charAt(i) && input.charAt(i) != include)) {
sb.append(input.charAt(i))
}
}
return sb.toString()
}
}