Valid Palindrome

来源:互联网 发布:投资 域名 编辑:程序博客网 时间:2024/06/05 01:04

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.

说明:先遍历字符串,将所有的大写字母转换为小写字母;再将串首和串尾字符(英文字符或数字字符)依次比较,直到首尾指针指向同一地址。

代码:

bool isPalindrome(char* s) {    if(strlen(s) <= 1)  return true;    char *p = s;    while(*p != '\0')    {        if(isupper(*p))            *p = tolower(*p);        p++;    }    printf("%s\n", s);    p--;    while(s < p)    {        if(((*s <= 'z' && *s >= 'a') || (*s >= '0' && *s <= '9')) && ((*p <= 'z' && *p >= 'a') || (*p >= '0' && *p <= '9')))        {            if(*s == *p)            {                s++;                p--;            }            else                return false;        }        else if((*s <= 'z' && *s >= 'a') || (*s >= '0' && *s <= '9'))            p--;        else if((*p <= 'z' && *p >= 'a') || (*p >= '0' && *p <= '9'))            s++;        else        {            s++;            p--;        }    }    return true;}
0 0
原创粉丝点击