【leetcode】验证回文字符串

验证回文字符串

给定一个字符串,确定它是否是回文,只考虑字母数字字符和忽略大小写。

例如:
"A man, a plan, a canal: Panama" 是回文字符串。
"race a car" 不是回文字符串。

注意:
你有考虑过这个字符串可能是空的吗? 在面试中这是一个很好的问题。

针对此题目,我们将空字符串定义为有效的回文字符串。

思路:

双指针,一头一尾,遍历字符串, 验证头尾指针所指向字符是否相等,发现不等立即退出并返回false,到头指针>=尾指针;

1.注意跳过非英文字符和非数字字符。

2.使用tolower()转换为小写比较。

3.注意空字符串,直接返回true。


bool isValid(char c){

    if(isalpha(c) || (c>='0' && c<='9')){
        //printf("is valid : %c\n",c);
        return true;
    }
    else
        return false;
}

bool isPalindrome(char* s) {
    int len =strlen(s);
    char *begin=s,*end;
    if(len>0)
    {
        end=s+len-1;
        while(1)
        {
            while(!isValid(*begin))
            {
                begin++;
            }

            while(!isValid(*end))
            {
                end--;
            }

            if(begin

你可能感兴趣的:(编程面试,leetcode)