125. Valid Palindrome
对比LeetCode 20. Valid Parentheses
/**************************************************************************
*
* 125. [Valid Palindrome](https://leetcode.com/problems/valid-palindrome/)
*
* Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
* Example 1:
* Input: s = "A man, a plan, a canal: Panama"
* Output: true
* Explanation: "amanaplanacanalpanama" is a palindrome.
*
* Example 2:
* Input: s = "race a car"
* Output: false
* Explanation: "raceacar" is not a palindrome.
*
**************************************************************************/
// C 库函数 int isalnum(int c) 检查所传的字符是否是字母和数字。
// C 库函数 int tolower(int c) 把给定的字母转换为小写字母。
// int toupper(int c);
// isalpha Check if character is alphabetic (function )
// isdigit Check if character is decimal digit (function )
// isblank islower isupper
bool isPalindrome(char * s){
int len = strlen(s);
if (len < 1) return false;
if (len == 1 && isalnum(s[0])) return true;
int front = 0;
int back = len - 1;
while (front < back) {
while (!isalnum(s[front]) && front < back) front++;
while (!isalnum(s[back]) && front < back) back--;
if (isupper(s[front])) s[front] += 32;
if (isupper(s[back])) s[back] += 32;
if (s[front] != s[back])
return false;
front++;
back--;
}
return true;
}
本文介绍了一种用于判断字符串是否为回文的有效算法。该算法仅考虑字母数字字符,并忽略大小写。通过实例演示了如何使用C语言库函数进行字符检查及转换,实现了高效判断。

1162

被折叠的 条评论
为什么被折叠?



