Skip to content

LCR 018.验证回文串

md
给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。

本题中,将空字符串定义为有效的 回文串 。

 

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
示例 2:

输入: s = "race a car"
输出: false
解释:"raceacar" 不是回文串
 

提示:

1 <= s.length <= 2 * 105
字符串 s 由 ASCII 字符组成

就出栈入栈, 栈的经典操作罢了;

关于go的知识点: rune表示四个字节, 一个字符

go
func isPalindrome(s string) bool {
	stack := make([]rune, 0, len(s))

	for _, ch := range s { // 过滤空字符串
		if unicode.IsLetter(ch) || unicode.IsDigit(ch) {
			stack = append(stack, unicode.ToLower(ch))
		}
	}

	// 双指针
	left, right := 0, len(stack)-1
	for left < right {
		if stack[left] != stack[right] {
			return false
		}
		left++
		right--
	}
	return true
}
本站访客数 人次 本站总访问量