Valid Palindrome

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:首先定义一个函数判断一个字符是不是符合规则——字符和数字(不包含空格、标点符号等),然后在按照判断回文结构的经典规则,定义前后两个指针,如果前后两个指针的内容不符合规则,则begin++,end--,再者判断是否为回文结构。

class Solution {

public:

    bool isChar(char &ch)

    {

        if(ch>='0' && ch<='9')

            return true;

        else if(ch>='a' && ch<='z')

            return true;

        else if(ch>='A'&&ch<='Z')

        {

            ch+=32;

            return true;

        }

        return false;

    }

    bool isPalindrome(string s) {

        if(s=="")

            return true;

        int n=s.size();

        int begin=0;

        int end=n-1;

        while(begin<end)

        {

            if(!isChar(s[begin]))

                begin++;

            else if(!isChar(s[end]))

                end--;

            else if(s[begin++]!=s[end--])

            {

                return false;

            }

        }

        return true;

    }

};

思路2:设置一个字符串变量str,将原字符串中数字和字符不包含标点空格等纳入str,如果出现大写字母,则将其转变为小写字母。这样就得到了只包含字符和数字的字符串了,然后判断其是否为回文串。

class Solution {

public:

    bool isPalindrome(string s) {

        if(s=="")

            return true;

        string str="";

        int n=s.size();

        for(int i=0;i<n;i++)

        {

            if((s[i]>='a'&&s[i]<='z')||(s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='Z'))

            {

                if(s[i]>='A'&&s[i]<='Z')

                    str+=(s[i]-'A'+'a');

                else

                    str+=s[i];

            }

        }

        for(int i=0;i<str.size();i++)

        {

            if(str[i]!=str[str.size()-i-1])

                return false;

        }

        return true;

    }

};

 

你可能感兴趣的:(ROM)