কম্পিউটার

একটি স্ট্রিং C++ এ আরেকটি স্ট্রিং ভাঙতে পারে কিনা তা পরীক্ষা করুন


ধরুন আমাদের দুটি স্ট্রিং s1 এবং s2 আছে যার আকার একই; আমাদের পরীক্ষা করতে হবে যে স্ট্রিং s1-এর কিছু পারমুটেশন স্ট্রিং s2-এর কিছু পারমুটেশন ভাঙতে পারে নাকি এর বিপরীতে। x[i]>=y[i] (বর্ণানুক্রমিক ক্রমে) 0 থেকে n-1 রেঞ্জের সকল i-এর জন্য একটি স্ট্রিং a স্ট্রিং b ভাঙতে পারে।

সুতরাং, যদি ইনপুটটি s1 =abc এবং s2 =xya এর মত হয়, তাহলে আউটপুটটি সত্য হবে। এর কারণ হল "ayx" হল s2 এর একটি পারমুটেশন যা স্ট্রিং "abc" এ ভেঙ্গে যেতে পারে যা s1="abc" এর একটি পারমুটেশন।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন চেক (), এটি s1, s2,

    লাগবে
  • আরম্ভ করার জন্য i :=0, যখন i

    • যদি s2[i]

      • ফেরত মিথ্যা

  • প্রত্যাবর্তন সত্য

  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -

  • অ্যারে সাজান s1

  • অ্যারে s2 সাজান

  • f3 :=চেক(s2, s1)

  • f4 :=চেক(s1, s2)

  • ফিরুন সত্য হয় f3 সত্য বা f4 সত্য, অন্যথায় মিথ্যা

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool check(string& s1, string& s2){
      for (int i = 0; i < s1.size(); i++) {
         if (s2[i] < s1[i])
            return false;
      }
      return true;
   }
   bool checkIfCanBreak(string s1, string s2) {
      sort(s1.begin(), s1.end());
      sort(s2.begin(), s2.end());
      bool f3 = check(s2, s1);
      bool f4 = check(s1, s2);
      return f3 || f4;
   }
};
main(){
   Solution ob;
   cout << (ob.checkIfCanBreak("abc", "xya"));
}

ইনপুট

"abc", "xya"

আউটপুট

1

  1. সুইফটে স্ট্রিংটিতে অন্য স্ট্রিং রয়েছে কিনা তা পরীক্ষা করুন

  2. একটি বাইনারি গাছ C++ এ অন্য বাইনারি গাছের সাবট্রি কিনা তা পরীক্ষা করুন

  3. পাইথনে আরেকটি স্ট্রিং তৈরি করতে একটি স্ট্রিং পুনরাবৃত্তি করা যায় কিনা তা পরীক্ষা করুন

  4. পাইথনে অন্য স্ট্রিং 2 জায়গায় ঘুরিয়ে একটি স্ট্রিং পাওয়া যায় কিনা তা পরীক্ষা করুন