Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example, "A man, a plan, a canal: Panama" is a palindrome. "race a car" is not a palindrome.
Note: Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
题目的意思是给定一个字符串,只考虑其中的数字和字母,判断该字符串是否是回文。
思路:设置头尾指针同时向中间遍历字符串,遇到非字母数字的字符需要跳过,判断头尾指针所指的字符是否相等,如果不相等的话,就不是回文。这题目也可以直接用一个函数isalnum来判断是否是字母数字。
class Solution {
public:
bool isPalindrome(string s) {
if(s.empty() || s.size()==1)
return true;
for(int i=0, j=s.size()-1;i<j;)
{
//while(!(tolower(s[i])>='a' && tolower(s[i])<='z' || s[i]>='0' && s[i]<='9'))
while(!(isalnum(s[i])))
i++;
//while(!(tolower(s[j])>='a' && tolower(s[j])<='z' || s[j]>='0' && s[j]<='9'))
while(!(isalnum(s[j])))
j--;
if(i<j)
{
if(tolower(s[i])==tolower(s[j]))
{
i++;
j--;
}
else
return false;
}
}
return true;
}
};
照顾好自己的身体,控制好自己的情绪,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。