Leetcode Note: Go - Valid Palindrome II

Valid Palindrome II - LeetCode
https://leetcode.com/problems/valid-palindrome-ii/

  • Go 言語で取り組んだメモ

所感

  • 渡された string 値が回文なら true を return する

回答

Go 12ms 100% clear solution - LeetCode Discuss
https://leetcode.com/problems/valid-palindrome-ii/discuss/507206/Go-12ms-100-clear-solution

Go 12ms 100% clear solution - LeetCode Discuss
https://leetcode.com/problems/valid-palindrome-ii/discuss/507206/Go-12ms-100-clear-solution

func validPalindrome(s string) bool {
    valid, l, r := isPalindrome(s, 0, len(s)-1)
    if valid {
        return true
    }
    if valid, _, _ := isPalindrome(s, l+1, r); valid {
        return true
    }
    if valid, _, _ := isPalindrome(s, l, r-1); valid {
        return true
    }
    return false
}

func isPalindrome(s string, l, r int) (bool, int, int) {
    for l < r {
        if s[l] != s[r] {
            return false, l, r
        }
        l++
        r--
    }
    return true, 0, 0
}
  • isPalindrome を実装して、文字列の左端と右端を比較して回文を判定していく