回文是一个前后拼写相同的字符串。用C++编写一个递归函数 testPalindome ,如果存储在数组中的字符串是回文,则返回 true ,否则返回 false 。忽略字符串中的空格和标点符号。
时间: 2024-05-08 11:16:40 浏览: 83
PHP判断一个字符串是否是回文字符串的方法
5星 · 资源好评率100%
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isPalindrome(char str[], int start, int end) {
// 如果字符串为空或只有一个字符,则是回文
if (start >= end) {
return 1;
}
// 忽略空格和标点符号
while (!isalnum(str[start])) {
start++;
}
while (!isalnum(str[end])) {
end--;
}
// 如果忽略空格和标点符号后,左右两边字符不同,则不是回文
if (tolower(str[start]) != tolower(str[end])) {
return 0;
}
// 递归判断剩余子串是否是回文
return isPalindrome(str, start+1, end-1);
}
int testPalindrome(char str[]) {
int len = strlen(str);
// 空串不是回文
if (len == 0) {
return 0;
}
return isPalindrome(str, 0, len-1);
}
int main() {
char str[] = "A man, a plan, a canal, Panama!";
if (testPalindrome(str)) {
printf("%s is palindrome.\n", str);
} else {
printf("%s is not palindrome.\n", str);
}
return 0;
}
```
阅读全文