Skip to content

Instantly share code, notes, and snippets.

@jbasinger
Last active March 14, 2021 00:48
Show Gist options
  • Save jbasinger/c5245eb8fcb7e9c05e4430a95d7aee22 to your computer and use it in GitHub Desktop.
Save jbasinger/c5245eb8fcb7e9c05e4430a95d7aee22 to your computer and use it in GitHub Desktop.

Revisions

  1. jbasinger revised this gist Mar 14, 2021. 1 changed file with 49 additions and 0 deletions.
    49 changes: 49 additions & 0 deletions solution.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    public string LongestPalindrome(string s)
    {
    if (s.Length == 0 || s.Length==1)
    return s;

    var longestPali = s[0].ToString();

    for (var i = 0; i < s.Length; i++)
    {
    //Walk backward until you find the same character then start looking for a palindrome
    for (var j = s.Length - 1; j >= i; j--)
    {
    if (s[i] == s[j]) //Potential Palindrome
    {

    var len = j - i+1;

    //If the length is smaller than our current one, why bother!
    if (len <= longestPali.Length)
    continue;

    var isPalindrome = true;
    var tempPali = new char[len];

    for (int front = i, back = j, first = 0, last = len-1; front <= back; front++, back--, first++, last--)
    {
    if (s[front] != s[back])
    {
    isPalindrome = false;
    break;
    }

    tempPali[first] = s[front];
    tempPali[last] = s[back];
    }

    var newPali = new string(tempPali);
    if (isPalindrome && newPali.Length > longestPali.Length)
    {
    longestPali = newPali;
    }

    }
    }

    }

    return longestPali;
    }
  2. jbasinger created this gist Mar 14, 2021.
    17 changes: 17 additions & 0 deletions tests1.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    [Test]
    public void PalindromeInTheBeginning()
    {
    _sut.LongestPalindrome("babad").ShouldBe("bab");
    }

    [Test]
    public void PalindromeInTheMiddle()
    {
    _sut.LongestPalindrome("cbbd").ShouldBe("bb");
    }

    [Test]
    public void PalindromeAtTheEnd()
    {
    _sut.LongestPalindrome("asedad").ShouldBe("dad");
    }
    11 changes: 11 additions & 0 deletions tests2.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    [Test]
    public void PalindromeIsTheWholeString()
    {
    _sut.LongestPalindrome("racecar").ShouldBe("racecar");
    }

    [Test]
    public void NoPalindromes()
    {
    _sut.LongestPalindrome("ab").ShouldBe("a");
    }