C语言判断回文字符串:两种方法实现
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
总结
本文介绍了两种判断字符串是否为回文的方法,方法一使用逆序比较,方法二使用循环比较对应字符。两种方法各有优缺点,可根据实际情况选择合适的方法。
原文地址: https://www.cveoy.top/t/topic/mYKT 著作权归作者所有。请勿转载和采集!