79_leetcode_Valid Palindrome

来源:互联网 发布:淘宝网足球价格 编辑:程序博客网 时间:2024/06/14 10:46

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.

1:注意特殊情况;2:设置start和end两个指针,分别从前到后和从后到前遍历字符串;当遇到字母和数字的时候分别停止;比较所指向内容;如果不符合条件直接返回false

2:如果两个指针能相遇,返回true;


    bool isPalindrome(string s)    {        if(s.empty())        {            return true;        }                int size = (int)s.size();        int start = 0;        int end = size - 1;                while(start < end)        {            while(start < end && !((s[start] >= '0' && s[start] <= '9') || (s[start] >= 'a' && s[start] <= 'z') ||(s[start] >= 'A' && s[start] <= 'Z')))            {                start++;            }                        while(start < end && !((s[end] >= '0' && s[end] <= '9') || (s[end] >= 'a' && s[end] <= 'z') ||(s[end] >= 'A' && s[end] <= 'Z')))            {                end--;            }                        if(s[start] == s[end] || s[start] - 'a' == s[end] - 'A' || s[start] - 'A' == s[end] - 'a')            {                start++;                end--;            }            else            {                return false;            }        }                return true;    }


0 0
原创粉丝点击