用c++语言如何判断回文
时间: 2024-02-28 13:57:24 浏览: 76
C++中可以使用类似于Python的双指针方法来判断一个字符串是否为回文。以下是一个示例代码:
```c++
#include <iostream>
#include <cstring>
#include <cctype> // 包含头文件ctype.h
using namespace std;
int main() {
char s[81]; // 定义一个字符数组,用于存储输入的字符串
cin.getline(s, 81); // 输入字符串(可以包含空格)
int len = strlen(s); // 获取字符串的长度
// 将字符串中的英文字母全部转换为小写,并去掉非数字字母字符
for (int i = 0; i < len; i++) {
s[i] = tolower(s[i]); // 将字母转换为小写
if (!isalnum(s[i])) { // 如果不是数字或字母
for (int j = i; j < len - 1; j++) {
s[j] = s[j+1]; // 将后面的字符前移
}
len--; // 字符串长度减1
i--; // 继续判断当前位置的字符
}
}
// 判断字符串是否为回文
bool is_palindrome = true;
for (int i = 0; i < len/2; i++) {
if (s[i] != s[len-i-1]) {
is_palindrome = false;
break;
}
}
// 输出结果
if (is_palindrome) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
该程序使用了`ctype.h`头文件中的`tolower`和`isalnum`函数,分别用于将字母转换为小写和判断字符是否为数字或字母。其中,`s[i] = tolower(s[i])`可以将`s`中的第`i`个字符转换为小写,而`isalnum(s[i])`会返回一个布尔值,表示`s`中的第`i`个字符是否为数字或字母。如果不是数字或字母,就需要将该字符从字符串中去掉,具体实现方法是将其后面的字符都前移一位,并将字符串的长度减1。
阅读全文