列表

详情


680. 验证回文字符串 Ⅱ

给定一个非空字符串 s最多删除一个字符。判断是否能成为回文字符串。

 

示例 1:

输入: s = "aba"
输出: true

示例 2:

输入: s = "abca"
输出: true
解释: 你可以删除c字符。

示例 3:

输入: s = "abc"
输出: false

 

提示:

相似题目

验证回文串

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool validPalindrome(string s) { } };

golang 解法, 执行用时: 20 ms, 内存消耗: 6.5 MB, 提交时间: 2021-06-21 16:08:50

func validPalindrome(s string) bool {
	low, high := 0, len(s) - 1
	for low < high {
		if s[low] == s[high] {
			low++
			high--
		} else {
			flag1, flag2 := true, true
			// 排除高位, 剩余是否回文
			for i, j := low, high - 1; i < j; i, j = i + 1, j - 1 {
				if s[i] != s[j] {
					flag1 = false
					break
				}
			}
			// 排除低位, 剩余是否回文
			for i, j := low + 1, high; i < j; i, j = i + 1, j - 1 {
				if s[i] != s[j] {
					flag2 = false
					break
				}
			}
			return flag1 || flag2
		}
	}
	return true
}

上一题