LeetCode Valid Palindrome

Description

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.

The original problem is here.

The original code is here.

My Solution

I solve this problem in C++, as below:

/*
*Valid Palindrome
*Author: shuaijiang
*Email: zhaoshuaijiang8@gmail.com
*/
#include<iostream>
#include<vector>
#include<string.h>
#include<stdlib.h>
using namespace std;

class Solution {
public:
    bool isPalindrome(string s) {
        s = filter(s);
        if(s.size() <=1)
            return true;
        int len = s.length();
        for(int count=0;count<len/2;count++){
            if(s[count] != s[len-count-1])
                return false;
        }
        return true;
    }
    
    string filter(string s){
        if(s == "")
            return s;
        int len = s.length();
        string str;
        for(int count=0;count<len;++count){
            char  ch = s[count];
            if(ch>='A'&&ch<='Z')
                str.push_back(ch+32);
            else if((ch>='a'&&ch<='z') || (ch>='0'&&ch<='9'))
                str.push_back(ch);
        }
        return str;
    }
};
//The codes under below is used for test
int main(){
    string str("aa");
    Solution s;
    string filter_str = s.filter(str);
    cout<<"Filter="<<filter_str<<endl;
    bool isP = s.isPalindrome(str);
    cout<<"isPalindrome="<<isP<<endl;
    system("pause");
    return 0;
}
TEXT

Note

To solve the problem, first we should filter the string except alphanumeric characters. Then, we can compare the characters the two point of the string.


LeetCode Valid Palindrome
http://zhaoshuaijiang.com/2015/06/25/leetcode_valid_palindrome/
作者
shuaijiang
发布于
2015年6月25日
许可协议