aiaiask.com©

开花即结果 提问即答案

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, "  
")] = '\0'; // 去掉换行符

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

    return 0;
}

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

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

C++编程:小红的字符串变身回文串之探秘
https://www.aiaiask.com/ask/44824.html
AI / 模型Siliconflow
时间 / DATEAugust 19, 2023, 5:14 PM
语言zh-CN
IP / 区域未知