Valid Palindrome(leetcode)

来源:互联网 发布:苹果mac顿号怎么打 编辑:程序博客网 时间:2024/05/22 18:00

题目:

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.

题目来源:https://oj.leetcode.com/problems/valid-palindrome/

解题思路:从两个指针,一个从前往后,一个从后往前扫描即可

#include<iostream>using namespace std;bool isPalindrome(string s){if(s.size()<=1)return true;const int N=s.size();int i=0,j=N-1;while(i<j){if(isalpha(s[i]))s[i]=tolower(s[i]);else if(!isdigit(s[i])){i++;continue;}if(isalpha(s[j]))s[j]=tolower(s[j]);else if(!isdigit(s[j])){j--;continue;}if(s[i]==s[j]){i++;j--;}elsereturn false;}return true;}int main(){string s="A man, a plan, a canal: Panama";cout<<isPalindrome(s)<<endl;system("pause");return 0;}


0 0
原创粉丝点击