Determine if a string is squeezable: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
|||
Line 714: | Line 714: | ||
original : length = 8, string = «««😍😀🙌💃😍😍😍🙌»»» |
original : length = 8, string = «««😍😀🙌💃😍😍😍🙌»»» |
||
squeezed : length = 6, 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> |
</pre> |
||