作者:L爱你j_828 | 来源:互联网 | 2024-11-17 18:46
本题要求检查给定的字符串是否为回文。在判断过程中,仅考虑字母和数字字符,并且忽略大小写。例如,"Aman,aplan,acanal:Panama"是一个回文。
问题描述
给定一个字符串,判断其是否为回文。在判断过程中,只考虑字母和数字字符,并且忽略大小写。
示例:
"A man, a plan, a canal: Panama" 是一个回文
"race a car" 不是一个回文
注意:
空字符串被视为回文。
解决方案
判断回文的一种常见方法是使用双指针技术。具体步骤如下:
- 初始化两个指针,分别指向字符串的首尾。
- 比较两个指针所指向的字符,如果不同,则该字符串不是回文;如果相同,则两个指针分别向中间移动。
- 重复上述步骤,直到两个指针相遇或有字符不等。
在处理过程中,需要注意以下细节:
- 非字母数字字符不参与判断,需要在每次移动指针时跳过这些字符。
- 可以使用
isalnum
函数来判断字符是否为字母或数字。
- 为了忽略大小写,可以在比较字符前使用
tolower
将字符转换为小写。
根据上述思路,可以编写如下代码:
class Solution {
public:
bool isPalindrome(string s) {
if (s.empty()) {
return true;
}
int left = 0;
int right = s.size() - 1;
while (left
提交后,该代码顺利通过了所有测试用例。