কম্পিউটার

C++ এ একটি অপসারণের পর দুটি স্ট্রিংয়ের একটির সমান হয়ে যাওয়া স্ট্রিংয়ের সংখ্যা


আমাদের দুটি ভিন্ন স্ট্রিং দেওয়া হয়েছে, আসুন s1 এবং s2 বলি এবং কাজটি হল স্ট্রিং তৈরি করা, আসুন s1 এবং s2-এর অনন্য অক্ষরগুলিকে একত্রিত করে S বলি এবং এখন পরীক্ষা করুন S স্ট্রিং থেকে একটি অক্ষর সরানোর পরে এটি একটি স্ট্রিং তৈরি করছে কিনা। স্ট্রিং s1 বা s2 এর সমান হবে।

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

ইনপুট - স্ট্রিং S1 ="উত্তর", স্ট্রিং S2 ="মাখন";

আউটপুট - একটি অপসারণের পরে দুটি স্ট্রিংয়ের একটির সমান হওয়া স্ট্রিংগুলির সংখ্যা হল:1

ব্যাখ্যা - আমাদের স্ট্রিং s1 এবং s2 দেওয়া হয়েছে এবং আমরা স্ট্রিং S থেকে অর্থাৎ 'মাখন' থেকে করব এবং এখন যদি আমরা স্ট্রিং S থেকে 'b' অক্ষরটি সরিয়ে ফেলি তবে এটি 'utter' হয়ে যাবে যা স্ট্রিং s1 এর সমান তাই গণনা হল 1।

ইনপুট - স্ট্রিং S1 ="ফ্যাট", স্ট্রিং S2 ="ইঁদুর";

আউটপুট - একটি অপসারণের পর দুটি স্ট্রিংয়ের একটির সমান হওয়া স্ট্রিংগুলির সংখ্যা হল:2

ব্যাখ্যা - আমাদেরকে স্ট্রিং s1 এবং s2 দেওয়া হয়েছে এবং আমরা স্ট্রিং S অর্থাৎ 'frat' গঠন করব এবং এখন যদি আমরা স্ট্রিং S থেকে 'rs' অক্ষরটি সরিয়ে ফেলি তবে এটি 'ফ্যাট' হয়ে যাবে যা স্ট্রিং s1 এর সমান এবং যদি আমরা অক্ষরটি সরিয়ে ফেলি 'f' এটি 'rat' হয়ে যাবে যা স্ট্রিং s2 এর সমান তাই গণনা হল 2।

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

  • দুটি স্ট্রিং s1 এবং s2 ঘোষণা করুন এবং স্ট্রিং s1 এর আকার গণনা করুন এবং আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা পাস করুন৷
  • একটি পরিবর্তনশীল গণনা ঘোষণা করুন এবং এটি 2 হিসাবে সেট করুন কারণ সর্বাধিক আউটপুট যা সম্ভব 2।
  • লুপ ট্রাভার্সালের জন্য দুটি অস্থায়ী ভেরিয়েবলকে শুরু এবং শেষ হিসাবে ঘোষণা করুন৷
  • স্টার্ট লুপ ফর 0 থেকে একটি স্ট্রিং s1 এর আকার পর্যন্ত এবং লুপের ভিতরে চেক করুন IF s1[i] s2 এর সমান নয় তারপর i এবং break হিসাবে স্টার্ট সেট করুন
  • আরেকটি লুপ FOR শুরু করুন i থেকে একটি কম সাইজের স্ট্রিং s1 পর্যন্ত এবং লুপের ভিতরে চেক করুন যদি s1 s2 এর সমান না হয় তারপর i এবং break হিসাবে শেষ করুন
  • শেষের IF মান পরীক্ষা করুন তারপর শুরু করুন তারপর গণনা 26 * (স্ট্রিং s1 + 1 এর আকার) এবং রিটার্ন কাউন্ট হিসাবে সেট করুন।
  • অন্যথায় যদি চেক শুরু শেষের সমান হয় তাহলে ফেরত গণনা
  • অন্যথা, i থেকে শুরু করার জন্য +1 শেষ পর্যন্ত লুপ শুরু করুন এবং লুপের ভিতরে চেক করুন যদি s1[i] s2[i-1] এর সমান না হয় তারপর গণনাটি 1 দ্বারা হ্রাস করুন এবং বিরতি করুন
  • স্টার্ট লুপ ফর i থেকে শুরু করুন + 1 শেষ পর্যন্ত এবং চেক করুন যদি s1[i-1] s2 এর সমান না হয়[i] তারপর গণনাটি 1 করে হ্রাস করুন এবং বিরতি করুন
  • গণনা ফেরত দিন।
  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int equal_removal(string S1, string S2, int size_S1) {
   int count = 2;
   int start;
   int end;

   for (int i = 0; i < size_S1; ++i) {
      if (S1[i] != S2[i]) {
         start = i;
         break;
      }
   }
   for (int i = size_S1 - 1; i >= 0; i--) {
      if (S1[i] != S2[i]) {
         end = i;
         break;
      }
   }
   if (end < start) {
      count = 26 * (size_S1 + 1);
      return count;
   } else if (start == end) {
      return count;
   } else {
      for (int i = start + 1; i <= end; i++) {
         if (S1[i] != S2[i - 1]) {
            count--;
            break;
         }
      }
      for (int i = start + 1; i <= end; i++) {
         if (S1[i - 1] != S2[i]) {
            count--;
            break;
         }
      }
      return count;
   }
}
int main() {
   string S1 = "utter";
   string S2 = "butter";
   int size_S1 = S1.length();
   cout << "Count of strings that become equal to one of the two strings after one removal are: " << equal_removal(S1, S2, size_S1);
   return 0;
}

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

উৎপন্ন করবে

আউটপুট

Count of strings that become equal to one of the two strings after one removal are: 1

  1. C++ তে বিশপ যে সমস্ত বর্গক্ষেত্র পরিদর্শন করতে পারে তার মোট সংখ্যা গণনা করুন

  2. C++ এ N কেটে যাওয়ার পর বৃত্তের টুকরোগুলো গণনা করুন

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

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