কম্পিউটার

C++ এ দ্বিতীয় স্ট্রিং-এ অদলবদল করার পর দুটি স্ট্রিংয়ের মধ্যে সবচেয়ে দীর্ঘতম সাধারণ উপসর্গটি খুঁজুন


ধরুন আমাদের দুটি স্ট্রিং আছে str1 এবং str2। দ্বিতীয় স্ট্রিংটিতে শূন্য বা তার বেশি অপারেশন করার পরে তাদের মধ্যে সবচেয়ে দীর্ঘতম সাধারণ উপসর্গটি খুঁজুন। প্রতিটি অপারেশনে, আমরা যেকোনো দুটি অক্ষর অদলবদল করতে পারি। সুতরাং যদি str1 =“HERE”, str2 =“There” হয়, তাহলে আউটপুট হবে 4। দ্বিতীয় স্ট্রিংটি শুধুমাত্র অক্ষর অদলবদল করে “HERET” করা যেতে পারে। সুতরাং দীর্ঘতম উপসর্গটি দৈর্ঘ্য 4।

আমরা জানি যে আমরা শুধুমাত্র str2 এ অদলবদল করতে পারি। এবং ম্যাট্রিক্সের দৈর্ঘ্য সর্বাধিক হওয়া উচিত। সুতরাং ধারণা হল str1 অতিক্রম করা, এবং str1-এ বর্তমান অক্ষরের ফ্রিকোয়েন্সি str2-এর সমান বা কম কিনা তা পরীক্ষা করা। যদি হ্যাঁ, তাহলে স্ট্রিং a-এ এগিয়ে যান, অন্যথায় স্ট্রিং str1-এর অংশের দৈর্ঘ্য ভাঙ্গুন এবং প্রিন্ট করুন, যে পর্যন্ত স্ট্রিং str2-তে একটি অক্ষর মিলছে।

উদাহরণ

#include <iostream>
using namespace std;
void longestPrefix(string str1, string str2) {
   int frequency[26]={0};
   int a = str1.length();
   int b = str2.length();
   for (int i=0 ;i<b ; i++) {
      frequency[str2[i] - 97] += 1;
   }
   int c = 0;
   for (int i=0 ;i<a ; i++) {
      if (frequency[str1[i] - 97] > 0){
         c += 1;
         frequency[str1[i] - 97] -= 1;
      } else
      break;
   }
   cout<<"Length of longest common prefix: " << c;
}
int main() {
   string str1="here", str2 = "there";
   longestPrefix(str1, str2);
}

আউটপুট

Length of longest common prefix: 4

  1. একটি প্রদত্ত অনুক্রমের দীর্ঘতম উপসর্গ মিল খুঁজে পেতে C++ প্রোগ্রাম

  2. সিকোয়েন্সের একটি সেটে সমস্ত সিকোয়েন্সের সাধারণতম দীর্ঘতম অনুক্রম খুঁজে পেতে C++ প্রোগ্রাম

  3. দুটি স্ট্রিংকে সংযুক্ত করার জন্য C++ প্রোগ্রাম

  4. পাইথনে দুটির বেশি স্ট্রিং থেকে দীর্ঘতম সাধারণ সাবস্ট্রিং কীভাবে খুঁজে পাবেন?