C语言判断回文字符串:两种方法实现

本文将介绍使用C语言判断字符串是否为回文(palindrome)的两种方法。回文指的是正读和反读都一样的字符串,例如“level”和“racecar”。

方法一:逆序比较

这种方法通过创建一个新的数组,将原字符串逆序存储,然后比较两个数组中的字符串是否相同。

代码示例:

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

#define MAX_LEN 100

int main() {
    char a[MAX_LEN], b[MAX_LEN];
    int len, i, j, flag;

    // 输入字符串
    printf("请输入一个字符串:");
    scanf("%s", a);

    // 计算字符串长度
    len = strlen(a);

    // 第一种方法
    for (i = 0; i < len; i++) {
        b[len - 1 - i] = a[i]; // 将a中的字符从后往前依次存放到b中
    }
    flag = strcmp(a, b); // 比较a和b中的字符串是否相同
    if (flag == 0) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    // ... (第二种方法)

    return 0;
}

方法二:循环比较对应字符

这种方法只使用一个数组,通过循环的方式比较字符串中对应位置的字符是否相同。

代码示例:

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

#define MAX_LEN 100

int main() {
    char a[MAX_LEN], b[MAX_LEN];
    int len, i, j, flag;

    // 输入字符串
    printf("请输入一个字符串:");
    scanf("%s", a);

    // 计算字符串长度
    len = strlen(a);

    // ... (第一种方法)

    // 第二种方法
    flag = 1; // 假设字符串是回文
    for (i = 0, j = len - 1; i < j; i++, j--) {
        if (a[i] != a[j]) { // 如果对应字符不相同,则不是回文
            flag = 0;
            break;
        }
    }
    if (flag == 1) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}

运行结果

输入:

level

输出:

Yes
Yes

输入:

hello

输出:

No
No

总结

本文介绍了两种判断字符串是否为回文的方法,方法一使用逆序比较,方法二使用循环比较对应字符。两种方法各有优缺点,可根据实际情况选择合适的方法。

C语言判断回文字符串:两种方法实现

原文地址: https://www.cveoy.top/t/topic/mYKT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录