leetCode(51):Valid Palindrome

来源:互联网 发布:荣耀盒子第三方软件 编辑:程序博客网 时间:2024/05/18 02:22

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.

//用两个指针实现,前提是要忽略其他符号

class Solution {public:    bool isPalindrome(string s) {        if(s.empty())            return true;        int i=0;        int j=s.size()-1;        for(;i<j;i++)        {//i后移            if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || (s[i]>='0' && s[i]<='9'))            {//找到第一个为字符或数字的字符                for(;j>i;--j)                {//j前移                    if((s[j]>='a' && s[j]<='z') || (s[j]>='A' && s[j]<='Z') || (s[j]>='0' && s[j]<='9'))                    {//找到第一个为字符或数字的字符                        if(s[i]==s[j] || s[i]+'A'-'a'==s[j] || s[i]+'a'-'A'==s[j])                        {//找到后时行判断                            j--;//前进一步                            break;                        }                        else                            return false;                    }                }            }        }        return true;    }};


0 0
原创粉丝点击