Problem Statement
You are given a String input. You are to find the longest substring of input such that the reversal of the substring is also a substring of input. In case of a tie, return the string that occurs earliest in input.
Definition
- Class:
- ReverseSubstring
- Method:
- findReversed
- Parameters:
- String
- Returns:
- String
- Method signature:
- String findReversed(String input)
- (be sure your method is public)
Notes
- The substring and its reversal may overlap partially or completely.
- The entire original string is itself a valid substring (see example 4).
Constraints
- input will contain between 1 and 50 characters, inclusive.
- Each character of input will be an uppercase letter ('A'-'Z').
Examples
"XBCDEFYWFEDCBZ"
Returns: "BCDEF"
We see that the reverse of BCDEF is FEDCB, which appears later in the string."XYZ"
Returns: "X"
The best we can do is find a one character substring, so we implement the tie-breaker rule of taking the earliest one first."ABCABA"
Returns: "ABA"
The string ABA is a palindrome (it's its own reversal), so it meets the criteria."FDASJKUREKJFDFASIREYUFDHSAJYIREWQ"
Returns: "FDF"
"ABCDCBA"
Returns: "ABCDCBA"
Here, the entire string is its own reversal.