【Leetcode】Valid Palindrome

来源:互联网 发布:teambition mac下载 编辑:程序博客网 时间:2024/05/16 03:20

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.

题意:判断给定字符串是否为回文串。

设置两个指针,由头尾两端向中间移动,如果判断到所在位置的字符为非字母和数字,使用while循环,但同时要保证两个指针的前后位置没有发生改变。接着按两个指针所指的字符是否字母,数字等进行判断,如果不相等,跳出循环,否则继续下一轮循环。

class Solution {public:    bool isPalindrome(string s) {        if(s=="")            return true;        int len=s.size();        int i=0,j=len-1;        for(;j-i>=1;i++,j--)        {            while(!isalnum(s[i])&&i<=j)                i++;            while(!isalnum(s[j])&&j>=i)                j--;            if(j<=i)                break;            if(isalpha(s[i])&&isalpha(s[j]))            {                if(tolower(s[i])==tolower(s[j]))                    continue;                else                    break;            }            else if(isdigit(s[i])&&isdigit(s[j]))            {                if(s[i]==s[j])                    continue;                else                    break;            }            else                break;        }        if(j>i)            return false;        else            return true;    }};


0 0
原创粉丝点击