एक वाक्य को देखते हुए और चुनौती दिए गए वाक्य से सबसे लंबा पैलिंड्रोम खोजने की है
पैलिंड्रोम क्या है?
पैलिंड्रोम एक ऐसा शब्द या क्रम है जिसका अर्थ स्ट्रिंग को उलटने के बाद भी वही रहता है
उदाहरण - नितिन, स्ट्रिंग को उलटने के बाद उसका अर्थ वही रहता है।
चुनौती दिए गए वाक्य में से सबसे लंबा पैलिंड्रोम खोजने की है।
जैसे वाक्य है:मलयालम लीमादामेल इजी
इसमें तीन पैलिंड्रोम शब्द हैं लेकिन सबसे लंबा है - लीमाडामिल
एल्गोरिदम
START STEP 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