কম্পিউটার

C++ এ একটি সূচক পরিসরে প্যালিনড্রোমিক সাবস্ট্রিং-এর গণনা


আমাদের একটি স্ট্রিং এবং একটি রেঞ্জ দেওয়া হয়েছে শুরু থেকে শেষ পর্যন্ত এবং কাজটি হল একটি প্রদত্ত রেঞ্জে উপস্থিত প্যালিনড্রোমিক সাবস্ট্রিং গণনা করা। প্যালিনড্রোম স্ট্রিংগুলি হল সেই স্ট্রিংগুলি যেগুলি নিতিন, আবা, ইত্যাদির মতো একটি স্ট্রিংয়ের সামনে এবং পিছনের দিকে একই রকম৷

উদাহরণস্বরূপ

ইনপুট - ইনপুটস্ট্রিং ="cccaabbbdee", শুরু =2, শেষ =6;

আউটপুট - একটি সূচক রেঞ্জ 7

-এ প্যালিনড্রোমিক সাবস্ট্রিংগুলির গণনা

ব্যাখ্যা - আমাদের একটি রেঞ্জ এবং একটি স্ট্রিং দেওয়া হয়েছে তাই, আমরা স্টার্ট পয়েন্টার থেকে স্ট্রিংটি অতিক্রম করা শুরু করব যা 2 অর্থাৎ 'c' 6 পর্যন্ত অর্থাৎ 'b' তাই সাবস্ট্রিংটি 'caabb'। তাই প্যালিনড্রোমিক সাবস্ট্রিং হল 'c', 'a', 'a', 'b', 'b', 'aa' এবং 'bb'। সুতরাং, প্যালিনড্রোমিক সাবস্ট্রিংয়ের সংখ্যা হল 7।

ইনপুট - ইনপুটস্ট্রিং ="lioaabbbdee", শুরু =0, শেষ =2;

আউটপুট - একটি সূচক পরিসীমা 3

-এ প্যালিনড্রোমিক সাবস্ট্রিংগুলির গণনা

ব্যাখ্যা - আমাদের একটি রেঞ্জ এবং একটি স্ট্রিং দেওয়া হয়েছে তাই, আমরা স্টার্ট পয়েন্টার থেকে স্ট্রিংটি অতিক্রম করা শুরু করব যা 0 অর্থাৎ 'l' থেকে 2 অর্থাৎ 'o' পর্যন্ত তাই সাবস্ট্রিংটি 'lio'। তাই প্যালিনড্রোমিক সাবস্ট্রিং হল 'l', 'i' এবং 'o'। সুতরাং, প্যালিনড্রোমিক সাবস্ট্রিংয়ের গণনা হল 3।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • প্রদত্ত আকারের একটি স্ট্রিং এবং একটি পরিবর্তনশীল শুরু থেকে শেষ পর্যন্ত একটি পরিসর ঘোষণা করুন৷
  • আরও প্রক্রিয়াকরণের জন্য palindrome_index(arr, InputString) নামের ফাংশনে ডেটা পাস করুন
  • ফাংশনের ভিতরে, অ্যারের আকারের সাথে চেক করা নামের আরেকটি অ্যারে ঘোষণা করুন।
  • একটি অ্যারের দৈর্ঘ্য পর্যন্ত 0 থেকে i এর জন্য লুপ শুরু করুন
  • লুপের ভিতরে, 0 থেকে একটি অ্যারের দৈর্ঘ্য পর্যন্ত j এর জন্য আরেকটি লুপ শুরু করুন
  • লুপের ভিতরে, চেককে check[i][j] =0 এবং arr[i][j] =0 হিসাবে সেট করুন
  • দৈর্ঘ্য - 1 থেকে i 0 থেকে বড় না হওয়া পর্যন্ত লুপ শুরু করুন
  • লুপের ভিতরে, i এর চেক এবং arr 1 হিসাবে সেট করুন তারপর i + 1 থেকে একটি অ্যারের দৈর্ঘ্য পর্যন্ত j এর জন্য আরেকটি লুপ শুরু করুন
  • লুপের ভিতরে, চেক করুন যদি i i এ স্ট্রিং j এ স্ট্রিং এর সমান এবং i + 1 j - 1 এর থেকে বড় অথবা চেক করুন[i + 1][j - 1]) 0 এর সমান না তারপর চেক সেট করুন[i] [j] 1 ELSE হিসাবে, চেক[i][j] কে 0 হিসাবে সেট করুন তারপর arr[i][j] =arr[i][j - 1] + arr[i + 1][j] - arr[i] সেট করুন + 1][j - 1] + চেক[i][j]
  • শুরু এবং শেষ হিসাবে একটি 2-ডি অ্যারে প্রিন্ট করুন৷

উদাহরণ

import java.io.*;
class testqwe {
   static void palindrome_index(int arr[][], String s) {
      int length = s.length();
      int[][] check = new int[length + 1][length + 1];
      for (int i = 0; i <= length; i++) {
         for (int j = 0; j <= length; j++) {
            check[i][j] = 0;
            arr[i][j] = 0;
         }
      }

      for (int i = length - 1; i >= 0; i--) {
         check[i][i] = arr[i][i] = 1;
         for (int j = i + 1; j < length; j++) {
            if(s.charAt(i) == s.charAt(j) && (i + 1 > j - 1 || (check[i + 1][j - 1]) != 0)) {
               check[i][j] =1;
            } else {
               check[i][j] =0;
            }
            arr[i][j] = arr[i][j - 1] + arr[i + 1][j] - arr[i + 1][j - 1] + check[i][j];
         }
      }
   }
   public static void main(String args[]) {
      String InputString = "cccaabbbdee";
      int[][] arr;
      arr = new int[50][50];
      palindrome_index(arr, InputString);
      int start = 2;
      int end = 6;
      System.out.println("Count of Palindromic substrings in an Index range " + arr[start][end]);
   }
}

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে

আউটপুট

Count of Palindromic substrings in an Index range 7

  1. C++ এ পরিসরের সমষ্টির গণনা

  2. C++ এ একটি প্রদত্ত পরিসরে ফ্যাক্টরিয়াল সংখ্যা গণনা করুন

  3. C++ এ ক্ষুদ্রতম পরিসর II

  4. C++ এ সমস্ত প্রাইম লেংথ প্যালিনড্রোমিক সাবস্ট্রিং গণনা করুন