在C程序中打印句子中最长的回文词
给定一个句子,挑战是从给定的句子中找到最长的回文
什么是回文?
回文是一个单词或序列,即使在反转字符串后其含义也保持不变
示例-Nitin,在反转字符串之后,其含义保持不变。
挑战是从给定的句子中找到最长的回文。
喜欢的句子是:malayalam liemadameil iji
它包含三个回文词,但最长的是-liemadameil
算法
STARTSTEP 1 -> Declare start variables I, j, k, l, max to 0, index to -1, check to 0, count to 0
Step 2 -> Loop For i to 0 and i<strlen(str) and i++
Set max =0, k =i and j=i+1
Loop While str[j]!=' ' and str[j]!='\0'
Increment j by 1
End While
Set l=j-1
IF str[k]!=' ' and str[k]!='\0'
Loop While k<=1
If str[k]==str[l]
Increment max by 1
If count<=max
Set index=i and count = max
End If
End IF
Else
Set max = 0, count = -1
Break
End Else
Increment k and I by 1
End Loop While
End If
Set i=j
Step 3 -> End Loop For
Step 4 -> Loop For i = index and i!=-1 && str[i]!=' ' && str[i]!='\0' and i++
Print str[i]
Step 5 -> End Loop For
STOP
示例
#include <stdio.h>#include <string.h>
int main(int argc, char const *argv[]) {
char str[] = {"malayalam liemadameil iji"};
int i, k, l, j, max =0, index = -1, check = 0, count = 0;
for(i=0; i<strlen(str); i++) {
max = 0;
k = i;
j = i+1;
while(str[j]!=' ' && str[j]!='\0'){
j++;
}
l = j-1;
if(str[k]!=' ' && str[k]!='\0') {
while(k<=l) {
if (str[k]==str[l]) {
max++;
if(count<=max) {
index = i;
count = max;
}
} else {
max = 0;
count = -1;
break;
}
k++;
l--;
}
}
i = j;
}
for (i = index; i!=-1 && str[i]!=' ' && str[i]!='\0'; i++) {
printf("%c", str[i]);
}
return 0;
}
输出结果
如果我们运行上面的程序,那么它将生成以下输出。
liemadameil
以上是 在C程序中打印句子中最长的回文词 的全部内容, 来源链接: utcz.com/z/341165.html