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.
bool isAlphaOrNum(char c) //检测是否为字母或数字 { if( (c >= ‘0‘ && c <= ‘9‘) || (c >= ‘a‘ && c <= ‘z‘) || (c >= ‘A‘ && c <= ‘Z‘)) return 1; else return 0; } bool isPalindrome(char* s) { int size = strlen(s); int i = 0, j = size - 1; while(i <= j) { if(i == j) return true; if( !isAlphaOrNum( *(s + i) ) ) //如果不是字母或数字则指针移动,同时返回while去检测是i,j位置关系 { i++; continue; } if( !isAlphaOrNum( *(s + j) ) ) //最好while里面不要再while,很容易错 { j--; continue; } if( *(s + i) == *(s + j) || *(s + i) - *(s + j) == ‘A‘ - ‘a‘ || *(s + j) - *(s + i) == ‘A‘ - ‘a‘) { i++; j--; } else return false; } return true; //当输入为空时,返回为true }
原文:http://www.cnblogs.com/dylqt/p/4927289.html