AyrA icon

Palindrome checker

AyrA | PRO | 06/18/19 07:26:59 AM UTC | 0 ⭐ | 455 👁️ | Never ⏰ | []
C# |

2.11 KB

|

None

|

0 👍

/

0 👎

#https://redd.it/c1yls0
 
        public static string LongestPalindrome(string input)
        {
            if (input == null || input.Length == 0)
            {
                //Don't bother doing anything if length is zero
                return "";
            }
            //Maximum palindrome length so far
            int max = -1;
            //Longest palindrome so far
            string longest = "";
            //Possible palindrome we are checking
            string palindrome;
 
            for (int i = 0; i < input.Length; i++)
            {
                //Use lastIndexOf as start value of loop
                for (int j = input.LastIndexOf(input[i]); j > i; j--)
                {
                    int length = j + 1 - i;
                    //Check max length in the outer condition to avoid substring (it's expensive)
                    if (length > max && input[i] == input[j])
                    {
                        //Substring in C# is (start,length) not (start,end)
                        palindrome = input.Substring(i, length);
                        if (palli(palindrome))
                        {
                            max = length;
                            longest = palindrome;
                            break;
                        }
                    }
                }
            }
            //Ternery operator: d=a?b:c
            //Classic: if(a){d=b;}else{d=c;}
            return longest.Length > 0 ? longest : input.Substring(0, 1);
        }
 
        //Changed to bool
        private static bool palli(string k)
        {
            char[] str = k.ToCharArray();
 
            int n = k.Length;
            //You don't need to run through the entire string,
            //just the first half (n/2)
            for (int i = 0; i < n / 2; i++)
            {
                if (str[i] != str[n - i - 1])
                {
                    //Return failure directly
                    //and don't bother completing the loop
                    return false;
                }
            }
            return true;
        }

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎