#include <iostream> #include <string.h> #include <locale.h> using namespace std; #define STR_LEN 80 // 读入一行存入字符数组str,长度不超过maxLength void readline(char str[], int maxLength); // 判断字符ch是否是UTF-8中的汉字的第一个字节 bool isFirstByteOfChinese(char ch); // 判断字符数组str是否是回文 bool isPalindrome(char str[]); int main() { char str[STR_LEN + 1]; // 设置本地化环境,以便支持中文字符 setlocale(LC_ALL, ""); cout << "请输入一个长度不超过" << STR_LEN << "的字符串:"; readline(str, STR_LEN); if (isPalindrome(str)) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; } // 读入一行存入字符数组str,长度不超过maxLength void readline(char str[], int maxLength) { int i = 0; while (i < maxLength) { char ch = cin.get(); if (ch != '\n' && ch != '\r') { str[i] = ch; } else { break; } i++; } str[i] = '\0'; } // 判断字符ch是否是UTF-8中的汉字的第一个字节 bool isFirstByteOfChinese(char ch) { return (ch >= (char)0x80 && ch <= (char)0xFF); } // 判断字符数组str是否是回文 bool isPalindrome(char str[]) { int len = strlen(str); int left = 0, right = len - 1; while (left < right) { if (iswalpha(str[left]) && iswalpha(str[right])) { if (towlower(str[left]) != towlower(str[right])) { return false; } left++; right--; } else if (!iswalpha(str[left])) { left++; } else if (!iswalpha(str[right])) { right--; } else { // 如果是中文字符,需要判断两个字节是否相等 if (isFirstByteOfChinese(str[left]) && isFirstByteOfChinese(str[right])) { if (str[left] != str[right]) { return false; } left += 3; right -= 3; } else { // 如果不是中文字符,则按照英文字符处理 if (towlower(str[left]) != towlower(str[right])) { return false; } left++; right--; } } } return true; }把这段代码的缩进规范化
时间: 2024-01-04 21:04:03 浏览: 28
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
#define STR_LEN 80
void readline(char str[], int maxLength);
bool isFirstByteOfChinese(char ch);
bool isPalindrome(char str[]);
int main() {
char str[STR_LEN + 1];
setlocale(LC_ALL, "");
cout << "请输入一个长度不超过" << STR_LEN << "的字符串:";
readline(str, STR_LEN);
if (isPalindrome(str)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
void readline(char str[], int maxLength) {
int i = 0;
while (i < maxLength) {
char ch = cin.get();
if (ch != '\n' && ch != '\r') {
str[i] = ch;
} else {
break;
}
i++;
}
str[i] = '\0';
}
bool isFirstByteOfChinese(char ch) {
return (ch >= (char)0x80 && ch <= (char)0xFF);
}
bool isPalindrome(char str[]) {
int len = strlen(str);
int left = 0, right = len - 1;
while (left < right) {
if (iswalpha(str[left]) && iswalpha(str[right])) {
if (towlower(str[left]) != towlower(str[right])) {
return false;
}
left++;
right--;
} else if (!iswalpha(str[left])) {
left++;
} else if (!iswalpha(str[right])) {
right--;
} else {
if (isFirstByteOfChinese(str[left]) && isFirstByteOfChinese(str[right])) {
if (str[left] != str[right]) {
return false;
}
left += 3;
right -= 3;
} else {
if (towlower(str[left]) != towlower(str[right])) {
return false;
}
left++;
right--;
}
}
}
return true;
}
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)