有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入:
字符串
输出:
Yes或者No
说明:
如输出Yes,说明输入的字符串是一个回文字符串
输出No,说明输入的字符串不是一个回文字符串
请使用递归算法实现。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 10 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
#include <stdio.h>
#include <string.h>
int f(char *a, int i, int j) {
if (j <= i)
return 0;
if (i + 1 == j || i + 2 == j) {
if (a[i] == a[j])
return 1;
else
return 0;
}
if (i + 2 < j) {
if (a[i] == a[j]) {
i++, j--;
return 1 + f(a, i, j);
} else {
i++, j--;
return f(a, i, j);
}
}
}
int main() {
char a[250];
gets(a);
int len = strlen(a);
int i = 0, j = len - 1;
int p = f(a, i, j);
if (p == len / 2)
printf("Yes\n");
else
printf("No\n");
return 0;
}