Determine if a string is squeezable: Difference between revisions

Content added Content deleted
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 714:
original : length = 8, string = «««😍😀🙌💃😍😍😍🙌»»»
squeezed : length = 6, string = «««😍😀🙌💃😍🙌»»»
</pre>
 
=={{header|Java}}==
<lang 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();
}
 
}
</lang>
 
{{out}}
<pre>
use: ' '
old: 0 <<<>>>
new: 0 <<<>>>
 
use: '-'
old: 72 <<<"If I were two-faced, would I be wearing this one?" --- Abraham Lincoln >>>
new: 70 <<<"If I were two-faced, would I be wearing this one?" - Abraham Lincoln >>>
 
use: '7'
old: 72 <<<..1111111111111111111111111111111111111111111111111111111111111117777888>>>
new: 69 <<<..1111111111111111111111111111111111111111111111111111111111111117888>>>
 
use: '.'
old: 72 <<<I never give 'em hell, I just tell the truth, and they think it's hell. >>>
new: 72 <<<I never give 'em hell, I just tell the truth, and they think it's hell. >>>
 
use: ' '
old: 72 <<< --- Harry S Truman >>>
new: 20 <<< --- Harry S Truman >>>
 
use: '-'
old: 72 <<< --- Harry S Truman >>>
new: 70 <<< - Harry S Truman >>>
 
use: 'r'
old: 72 <<< --- Harry S Truman >>>
new: 71 <<< --- Hary S Truman >>>
 
use: '5'
old: 45 <<<122333444455555666666777777788888888999999999>>>
new: 41 <<<12233344445666666777777788888888999999999>>>
 
use: 'e'
old: 80 <<<The better the 4-wheel drive, the further you'll be from help when ya get stuck!>>>
new: 79 <<<The better the 4-whel drive, the further you'll be from help when ya get stuck!>>>
 
use: 's'
old: 16 <<<headmistressship>>>
new: 14 <<<headmistreship>>>
</pre>