একটি বাক্য দেওয়া হয়েছে এবং চ্যালেঞ্জ হল প্রদত্ত বাক্য থেকে দীর্ঘতম প্যালিনড্রোম খুঁজে বের করা
পলিন্ড্রোম কি?
প্যালিনড্রোম হল একটি শব্দ বা ক্রম যার অর্থ স্ট্রিং বিপরীত করার পরেও একই থাকে
উদাহরণ − নিতিন, স্ট্রিংটি বিপরীত করার পরে এর অর্থ একই থাকে৷
চ্যালেঞ্জ হল প্রদত্ত বাক্য থেকে দীর্ঘতম প্যালিনড্রোম খুঁজে বের করা।
বাক্যটির মত হল:মালয়ালম লিমাদামেইল আইজি
এটিতে তিনটি প্যালিনড্রোম শব্দ রয়েছে তবে দীর্ঘতমটি হল − liemadameil
অ্যালগরিদম
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