优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

用C++写: 小红有一个字符串,她可以进行以下操作 ·拆分。把w'拆成2个v, m 拆成2个n。 。轴对称。把"b'轴对称成d’,p轴对称成q,反之亦然。 ·翻转。把b翻

来自 未知 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
以下是用C语言编写的解决方案:

```c
#include <stdio.h>
#include <string.h>

int isSymmetric(char c1, char c2) {
if ((c1 == 'w' && c2 == 'v') || (c1 == 'v' && c2 == 'w') ||
(c1 == 'm' && c2 == 'n') || (c1 == 'n' && c2 == 'm') ||
(c1 == 'b' && c2 == 'd') || (c1 == 'd' && c2 == 'b') ||
(c1 == 'p' && c2 == 'q') || (c1 == 'q' && c2 == 'p')) {
return 1;
}
return 0;
}

int isPalindrome(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (!isSymmetric(str[i], str[len - i - 1])) {
return 0;
}
}
return 1;
}

int main() {
int T;
scanf("%d", &T);
getchar(); // 读取换行符

for (int i = 0; i < T; i++) {
char str[100001];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉换行符

if (isPalindrome(str)) {
printf("YES\n");
} else {
printf("NO\n");
}
}

return 0;
}
```

这个程序首先定义了一个`isSymmetric`函数,用于判断两个字符是否是轴对称的关系。然后定义了一个`isPalindrome`函数,用于判断一个字符串是否是回文串。最后,在`main`函数中,根据输入的询问次数,循环读取每个字符串,并调用`isPalindrome`函数进行判断,然后输出结果。

请注意,这个程序假设输入的字符串只包含小写字母,并且长度不超过100000。如果输入的字符串包含其他字符,可能会导致程序出错。
221381
领取福利

微信扫码领取福利

微信扫码分享