gpt4 book ai didi

c - 找到c中最长的子回文

转载 作者:行者123 更新时间:2023-11-30 15:27:29 25 4
gpt4 key购买 nike

我编写了一小段代码来操作字符串。在第一个函数中,我检查输入字符串是否是回文。第二个函数给出主字符串的子字符串。

现在我必须使用这些函数来查找主字符串中最大的“子回文”。不幸的是我不知道该怎么做。

我已经找到了一些生成子字符串的代码示例,但他们没有使用我的两个函数“check_palindrome”和“substr”。一些提示或小代码示例将不胜感激。

这是代码:

#include <stdio.h>
#include <stdlib.h>
#define STR_MAX 6 // to define the max amout of letters in the sting

char text[STR_MAX]; //global var

int check_palindrome() {

printf("Is '%s' a palindrome?\n", text);

int begin, middle, end, length = 0;

while (text[length] != '\0' )
length++;

end = length -1;
middle = length/2;

for( begin = 0 ; begin < middle ; begin++ ) {
if ( text[begin] != text[end] ) {
printf("False\n");
break;
}
end--;
}

if( text[begin] == text[middle])
printf("True\n");

return EXIT_SUCCESS;
}


int substr() {
int begin, end = 0;

printf("Enter your starting point: \n");
scanf("%d", &begin);

printf("enter last string: \n");
scanf("%d\n", &end);

printf("Your substring is: \n");
while (begin <= end) {
printf("%c", text[begin]); // loop for my substing from begin to end
begin += 1;
}
printf("\n");
return EXIT_SUCCESS;
}


int main(void) {

// for function check palindrome
printf("Here you can proof if your input is a palindrome\nPut in a string please: ");
fgets(text, STR_MAX, stdin); // i use fgets instead of gets
check_palindrome();


// for function substr
printf("Now you can choose a substring\n");
substr();

return EXIT_SUCCESS;
}

最佳答案

最简单的解决方案是创建嵌套循环。外循环必须迭代子字符串的开头。内循环是迭代子字符串的结尾。

然后我们使用库函数 strncpy 创建另一个名为 substring 的字符串。然后你应该检查它是否是回文。为此,您必须编辑函数 check_palindrom(),因为它应该采用 substring 作为参数。

如果子字符串是回文,您检查它是否具有最大大小,如果是,则将其保存到另一个缓冲区中。

substring[100];
for (char *begin = text; begin < text + strlen(text); begin++) {
for (char *end = begin; end <= text + strlen(text); end++) {
strncpy(substring, begin, end - begin + 1); //creating substring
//... here we must check if substring is palindome
//if it is we check if it has the biggest size. If yes then save it.
}
}

关于c - 找到c中最长的子回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958127/

25 4 0