给定字符串,输出长度至少为二的回文字符
时间: 2024-10-16 15:21:53 浏览: 34
要找出给定字符串中的长度至少为两的回文子串,我们可以使用滑动窗口的方法。滑动窗口是一种常见的算法技巧,用于在一个序列中查找具有特定性质的子序列。在这个例子中,我们将遍历字符串,维护两个指针(左和右)来定义一个子串,然后逐步扩展这个子串,直到不再是回文。
以下是一个简单的C语言程序示例,实现了这个功能:
```c
#include <stdio.h>
#include <string.h>
// 判断字符是否与翻转后的字符相同
int is_palindrome(char a, char b) {
return (a == b);
}
// 检查从left到right的子串是否为回文
int check_palindrome(char* str, int left, int right) {
while (left < right) {
if (!is_palindrome(str[left], str[right])) {
return 0;
}
left++;
right--;
}
return 1;
}
// 找出长度至少为2的回文子串
void find_longest_palindromes(char* str) {
int len = strlen(str);
for (int i = 0; i < len - 1; i++) { // 左边界
for (int j = i + 2; j <= len; j++) { // 右边界
if (check_palindrome(str, i, j - 1)) {
printf("Palindrome substring from %d to %d: %.*s\n", i, j - 1, j - i, str + i);
}
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin); // 注意这里要去除末尾的换行符
str[strlen(str) - 1] = '\0'; // 去掉fgets留下的换行符
find_longest_palindromes(str);
return 0;
}
```
当你运行这段代码并输入一个字符串后,它将输出所有长度至少为2的回文子串及其范围。
阅读全文