且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Code: Search a Reverse Substring

更新时间:2022-08-22 08:28:23

 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.

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
0) "XBCDEFYWFEDCBZ" 
    Returns: "BCDEF" 
    We see that the reverse of BCDEF is FEDCB, which appears later in the string.
1) "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.
2) "ABCABA" 
    Returns: "ABA" 
    The string ABA is a palindrome (it's its own reversal), so it meets the criteria.
3) "FDASJKUREKJFDFASIREYUFDHSAJYIREWQ" 
    Returns: "FDF"
    The similar as above.
4) "ABCDCBA" 
    Returns: "ABCDCBA" 
    Here, the entire string is its own reversal.

Code: Search a Reverse Substringclass ReverseSubstring
Code: Search a Reverse SubstringCode: Search a Reverse SubstringCode: Search a Reverse Substring
{
Code: Search a Reverse Substring    static void Main(string
[] args)
Code: Search a Reverse SubstringCode: Search a Reverse Substring    Code: Search a Reverse Substring
{
Code: Search a Reverse SubstringCode: Search a Reverse Substring        string[] strings = new string[] Code: Search a Reverse Substring
{ "XBCDEFYWFEDCBZ", "XYZ"
Code: Search a Reverse Substring                "FDASJKUREKJFDFASIREYUFDHSAJYIREWQ", "ABCDCBA" }
;
Code: Search a Reverse Substring        for ( int i=0 ; i < strings.Length ; ++
i )
Code: Search a Reverse SubstringCode: Search a Reverse Substring        Code: Search a Reverse Substring
{
Code: Search a Reverse Substring            System.Console.WriteLine(FindReversed(strings[i]));
Code: Search a Reverse Substring        }

Code: Search a Reverse Substring    }
Code: Search a Reverse Substring
Code: Search a Reverse Substring    
private static string FindReversed(string input)
Code: Search a Reverse SubstringCode: Search a Reverse Substring    Code: Search a Reverse Substring
{
Code: Search a Reverse Substring        string substring = string
.Empty;
Code: Search a Reverse Substring        for ( int i=0 ; i < input.Length ; ++
i )
Code: Search a Reverse SubstringCode: Search a Reverse Substring        Code: Search a Reverse Substring
{
Code: Search a Reverse Substring            for ( int j=0 ; j < input.Length ; ++
j )
Code: Search a Reverse SubstringCode: Search a Reverse Substring            Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                if ( input[i] == input[input.Length-1-
j] )
Code: Search a Reverse SubstringCode: Search a Reverse Substring                Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                    if ( i == input.Length-1-
j )
Code: Search a Reverse SubstringCode: Search a Reverse Substring                    Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                        if ( substring.Length == 0
 )
Code: Search a Reverse SubstringCode: Search a Reverse Substring                        Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                            substring =
 input[i].ToString();
Code: Search a Reverse Substring                        }

Code: Search a Reverse Substring                        break;
Code: Search a Reverse Substring                    }

Code: Search a Reverse Substring                    else
Code: Search a Reverse SubstringCode: Search a Reverse Substring                    Code: Search a Reverse Substring{
Code: Search a Reverse Substring                        int k = 0
;
Code: Search a Reverse Substring                        for ( ; k < input.Length-i-j ; ++
k )
Code: Search a Reverse SubstringCode: Search a Reverse Substring                        Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                            if ( input[i+k] != input[input.Length-1-j-k] ) break
;
Code: Search a Reverse Substring                        }

Code: Search a Reverse Substring                        if ( substring.Length < k )
Code: Search a Reverse SubstringCode: Search a Reverse Substring                        Code: Search a Reverse Substring
{
Code: Search a Reverse Substring                            substring =
 input.Substring(i, k);
Code: Search a Reverse Substring                        }

Code: Search a Reverse Substring                    }
Code: Search a Reverse Substring                }
Code: Search a Reverse Substring            }
Code: Search a Reverse Substring        }
Code: Search a Reverse Substring        return substring;
Code: Search a Reverse Substring    }

Code: Search a Reverse Substring}

Results are:
Code: Search a Reverse SubstringBCDEF
Code: Search a Reverse SubstringX
Code: Search a Reverse SubstringABA
Code: Search a Reverse SubstringFDF
Code: Search a Reverse SubstringABCDCBA

本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。