কম্পিউটার

সি প্রোগ্রামে একটি বাক্যে দীর্ঘতম প্যালিনড্রোম শব্দ প্রিন্ট করুন


একটি বাক্য দেওয়া হয়েছে এবং চ্যালেঞ্জ হল প্রদত্ত বাক্য থেকে দীর্ঘতম প্যালিনড্রোম খুঁজে বের করা

পলিন্ড্রোম কি?

প্যালিনড্রোম হল একটি শব্দ বা ক্রম যার অর্থ স্ট্রিং বিপরীত করার পরেও একই থাকে

উদাহরণ − নিতিন, স্ট্রিংটি বিপরীত করার পরে এর অর্থ একই থাকে৷

চ্যালেঞ্জ হল প্রদত্ত বাক্য থেকে দীর্ঘতম প্যালিনড্রোম খুঁজে বের করা।

বাক্যটির মত হল:মালয়ালম লিমাদামেইল আইজি

এটিতে তিনটি প্যালিনড্রোম শব্দ রয়েছে তবে দীর্ঘতমটি হল − 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

  1. সি তে রিভার্স ফ্লয়েডের ত্রিভুজ প্রিন্ট করার প্রোগ্রাম

  2. সি-তে সংখ্যাসূচক প্যাটার্ন প্রিন্ট করার জন্য প্রোগ্রাম

  3. সি তে কলাম অনুসারে সংখ্যা মুদ্রণের প্রোগ্রাম

  4. সি-তে নম্বর প্যাটার্ন প্রিন্ট করার প্রোগ্রাম