用C++判断含有汉字的回文
时间: 2023-07-30 17:12:41 浏览: 128
判断一个字符串是否为回文,可以先将字符串翻转,然后和原字符串进行比较,如果相同则为回文。
对于含有汉字的字符串,可以先将其转换成Unicode编码表示,然后再进行翻转和比较。以下是一个示例代码:
```c++
#include <iostream>
#include <string>
#include <locale>
using namespace std;
bool isPalindrome(string s) {
// 将字符串转换为 Unicode 编码表示
wstring ws;
for (auto c : s) {
ws += wchar_t(c);
}
// 使用 wstring 进行翻转和比较
wstring ws_reverse(ws.rbegin(), ws.rend());
return ws == ws_reverse;
}
int main() {
// 测试字符串
string s1 = "abcba";
string s2 = "上海自来水来自海上";
string s3 = "hello world";
// 判断是否为回文
cout << s1 << " is " << (isPalindrome(s1) ? "" : "not ") << "a palindrome." << endl;
cout << s2 << " is " << (isPalindrome(s2) ? "" : "not ") << "a palindrome." << endl;
cout << s3 << " is " << (isPalindrome(s3) ? "" : "not ") << "a palindrome." << endl;
return 0;
}
```
输出结果:
```
abcba is a palindrome.
上海自来水来自海上 is a palindrome.
hello world is not a palindrome.
```
阅读全文