কম্পিউটার

C++ এ AAA বা BBB ছাড়া স্ট্রিং


ধরুন আমাদের দুটি পূর্ণসংখ্যা A এবং B আছে, আমাদের যেকোনো স্ট্রিং S ফেরত দিতে হবে, যেমন −

  • S এর দৈর্ঘ্য A + B আছে এবং ঠিক কতগুলো অক্ষর 'a' এবং B সংখ্যা 'b' অক্ষর রয়েছে।

  • সাবস্ট্রিং "aaa" এবং "bbb" স্ট্রিং S

    এ থাকবে না

তাই যদি প্রদত্ত পূর্ণসংখ্যা A =4, B =1 হয়, তাহলে ফলাফল হবে "aabaa"।

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

  • একটি স্ট্রিং রেট সংজ্ঞায়িত করুন, প্রাথমিকভাবে এটি খালি

  • যখন |A – B|>=2,

    • যদি A> B, তাহলে

      • ret :=ret concatenate 'aa'

      • A 2 দ্বারা হ্রাস করুন

      • যদি B অ-শূন্য হয় তাহলে ret সহ 'b' হয় এবং B 1 দ্বারা হ্রাস করে

    • অন্যথায়

      • ret :=ret concatenate ‘bb’

      • B 2 দ্বারা হ্রাস করুন

      • A যদি শূন্য না হয় তাহলে ret সহ 'a' হয় এবং A কমিয়ে 1

  • যখন হয় A অ-শূন্য, বা B অ-শূন্য

    • A যদি শূন্য না হয় এবং (ret এর সাইজ <2 বা না হয় (ret এর সাইজ>=2 এবং ret এর শেষ উপাদান =ret এর দ্বিতীয় শেষ উপাদান) এবং ret এর শেষ উপাদানটি হয় 'a'), তাহলে

      • ret :=ret + 'a', A কমিয়ে 1

      • যদি B অ-শূন্য হয়

        • ret :=ret concatenate 'b', B কে 1 দ্বারা হ্রাস করুন

      • অন্যথায় 'b' কে রেট করুন, B কে 1 দ্বারা কমিয়ে দিন, যদি A 0 না হয়, তাহলে ret এর সাথে a কে সংযুক্ত করুন এবং A কে 1 দ্বারা কমিয়ে দিন

  • রিটার্ন রিটার্ন

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string strWithout3a3b(int A, int B) {
      string ret = "";
      while(abs(A - B) >= 2){
         if(A > B){
            ret += 'a';
            ret += 'a';
            A -= 2;
            if(B) {
               ret += 'b';
               B--;
            }
         }else{
            ret += 'b';
            ret += 'b';
              B -= 2;
              if(A) {
               ret += 'a';
               A--;
            }
         }  
     }
      while(A || B){
         if(A && (ret.size() < 2 || !(ret.size() >= 2 && ret[ret.size() - 1] == ret[ret.size() -                2] && ret[ret.size() - 1] == 'a') ) ){
            ret += 'a';
            A--;
            if(B) {
               ret += 'b';
               B--;
            }
         }else{
            ret += 'b';
            B--;
            if(A) {
              ret += 'a';
              A--;
            }
         }      
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.strWithout3a3b(4, 1));
}

ইনপুট

4
1

আউটপুট

"aabaa"

  1. C++ এ গেম ভি জাম্প করুন

  2. C++ এ () এ স্ট্রিং

  3. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?