Problem Statement
The following algorithm can be used to encode a sequence of characters s:
- Find any palindrome of even length in s. A palindrome is a string that reads the same forward and backward. If there are no palindromes of even length, go to step 3.
- Remove the last half of the selected palindrome from s. For example, if the palindrome is "0110", remove the "10". Go to step 1.
- Print the remaining sequence of characters.
Note that the resulting sequence is not necessarily unique since there may be multiple palindromes to choose from in step 1.
Given a
Definition
- Class:
- PalindromeEncoding
- Method:
- getLength
- Parameters:
- String
- Returns:
- int
- Method signature:
- int getLength(String s)
- (be sure your method is public)
Constraints
- s will contain between 1 and 50 characters, inclusive.
- s will contain only the digits '0' and '1'.
Examples
"0111001"
Returns: 2
First, take the last four digits and remove the "01" to get "01110". Then, select either of the "11"s and remove a "1" to get "0110". Finally, since the entire string is now a palindrome, you can remove the "10" to get "01".
"10000011110101101001000001100011110001100011001110"
Returns: 2
"00000000000000000000000000000000000000000000000000"
Returns: 1
"11111111111111111111111111111111111111111111111111"
Returns: 1
"0"
Returns: 1
There is no palindrome of even length in this string, so nothing is changed.
"01010111100110101110000001011000101000010111000111"
Returns: 6
"1"
Returns: 1
"10"
Returns: 2
"101"
Returns: 3
"1110"
Returns: 2
"01101"
Returns: 2
"011100"
Returns: 2
"0000101"
Returns: 4
"10001010"
Returns: 2
"000101110"
Returns: 4
"0011110000"
Returns: 2
"01111010110"
Returns: 2
"100100000110"
Returns: 2
"0011110001100"
Returns: 2
"01100111000110"
Returns: 2
"000100000111010"
Returns: 3
"1110010100101101"
Returns: 2
"01010001111001001"
Returns: 5
"110011010010010101"
Returns: 2
"0000100011001011001"
Returns: 3
"00110000000011111101"
Returns: 2
"110100100010100010010"
Returns: 4
"1001010110111010000111"
Returns: 2
"01000001100110010001110"
Returns: 3
"101000101011101110010010"
Returns: 4
"1110101101000110111000000"
Returns: 5
"10001000111011100000110011"
Returns: 2
"111101011010000010010111000"
Returns: 5
"0000100101010001000001010111"
Returns: 3
"10010110101011000110110111101"
Returns: 2
"101111011110110101001001011110"
Returns: 3
"0101110111001101111111111111000"
Returns: 4
"00100010000000011011011100011100"
Returns: 3
"100100111011010111111100110100110"
Returns: 2
"1000100111001010000101110000100111"
Returns: 2
"11011100111000110000101001100011000"
Returns: 3
"010001000101110100010001110000110011"
Returns: 3
"0001000100011110011010000000011101100"
Returns: 3
"11111011001101011111101110111011100000"
Returns: 3
"001101110111011111001110100110010000111"
Returns: 2
"1001100110100110000001000111100111000011"
Returns: 2
"10110100010100000011001011001100001010001"
Returns: 3
"011010001111110111000111110111001101100101"
Returns: 2
"1111000100111111100010110110111100010111000"
Returns: 2
"10010110101010010101010100000100000111111001"
Returns: 2
"111101100110001111011001010100001100110000000"
Returns: 3
"0011000000101101100010001000011111111010001010"
Returns: 2
"10000011100011001010101011000110111101001111010"
Returns: 2
"110011111010001110000000111101101100010111101011"
Returns: 2
"0100100100011010110101100011110100000000100000011"
Returns: 3
"01000100111011010011101100001100110111101000001111"
Returns: 3
"01010101010101010101010101010101010101010101010101"
Returns: 50
"10101010101010101010101010101010101010101010101010"
Returns: 50
"10101010101010101010101011101010101010101010101010"
Returns: 25
"10000101010"
Returns: 2
"11000000101000"
Returns: 2
"11111111111111011011010101100"
Returns: 3
"001"
Returns: 2
"1001101001"
Returns: 2
"101101010"
Returns: 3
"11111101010101010101010101010101010101010101010101"
Returns: 45
"01010111111110101010101010101010101"
Returns: 6
"00110001100011011000111001100110110011101011000101"
Returns: 2
"11110101"
Returns: 5
"00110011001100110011001100110011001100110011001100"
Returns: 2
"10111111010101100110001001"
Returns: 3
"01010111100110101110000001011000101000010111000111"
Returns: 6
"10001000100001000001000000000010000000000000000001"
Returns: 2
"01100100001101010011111010010110101101010110100"
Returns: 2
"01011101101101100000010101100111011100010001011000"
Returns: 4
"11111111111111111111111111111111111111111111111111"
Returns: 1
"000100"
Returns: 3
"0010101010101"
Returns: 12
"00110100110000000101011011011001010100010010010001"
Returns: 2
"00111001111000000101011011011001010100010010010001"
Returns: 2
"101001011010101"
Returns: 4
"1010110101101010101"
Returns: 5
"000100011111111111"
Returns: 3
"00001111"
Returns: 2
"00011111100000011100101011010101000011011100001100"
Returns: 2
"0101010110101001"
Returns: 8
"01101010101"
Returns: 2
"0001010001"
Returns: 5
"100001"
Returns: 2
"1011010000"
Returns: 3
"011101010101101011100000010110001010000101110001"
Returns: 2
"10110011011100111100001101110101001101110011000111"
Returns: 3
"100001000010000"
Returns: 2
"001010101010101010"
Returns: 17
"00000100000"
Returns: 3
"0001000"
Returns: 3
"1011010"
Returns: 3
"11001101100011111110001100101011100100011001111110"
Returns: 2
"10"
Returns: 2
"10110101"
Returns: 3
"10001111110000011111001001001100011100011111"
Returns: 2
"01100"
Returns: 2
"000010000101"
Returns: 3
"001101001101001101001101001101001101001101001101"
Returns: 2
"000000000000001010101010101"
Returns: 14
"11111100111010000011100101100010111110110110010111"
Returns: 2
"00000101010101111010011111110011010110000101100010"
Returns: 10
"10110000101010111010101000101101010111011001010110"
Returns: 3
"101100001010101110101010011000101110101011"
Returns: 3
"10110000101010111010101001100010111101100101011"
Returns: 3
"100111"
Returns: 2
"100010"
Returns: 2
"1100010"
Returns: 2
"111111111111110111111111100000111111111111111111"
Returns: 3
"010110100101010"
Returns: 4
"111111101111111"
Returns: 3
"01001010101010101010101010101010101010101010101010"
Returns: 3
"10111011101011011010111101110111101101101101101101"
Returns: 3
"111100010010101010001001010011"
Returns: 2
"0101010101101010101000011100000000111000101010100"
Returns: 10