কম্পিউটার টিউটোরিয়াল

সি++-এ স্ট্রিং উইথআউট AAA বা BBB (String Without AAA or BBB)


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

  • S-এর দৈর্ঘ্য A + B এবং এতে ঠিক A সংখ্যা 'a' এবং B সংখ্যা 'b' অক্ষর থাকে।

  • সাবস্ট্রিং "aaa" এবং "bbb" S-এ থাকবে না।

A = 4, B = 1 হলে ফলাফল হবে "aabaa"।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -

  • ret := খালি স্ট্রিং

  • যখন |A - B| >= 2

    • যদি A > B হয়, তবে

      • ret := ret + "aa"

      • A := A - 2

      • যদি B ≠ 0 হয়, ret := ret + "b" এবং B--

    • অন্যথায়

      • ret := ret + "bb"

      • B := B - 2

      • যদি A ≠ 0 হয়, ret := ret + "a" এবং A--

  • যখন A ≠ 0 বা B ≠ 0

    • যদি A ≠ 0 এবং (ret.size() < 2 বা !(ret.size() >= 2 এবং ret[ret.size()-1] == ret[ret.size()-2] এবং ret[ret.size()-1] == 'a')), তবে

      • ret := ret + 'a', A--

      • যদি B ≠ 0, ret := ret + 'b', B--

    • অন্যথায় ret := ret + 'b', B--, যদি A ≠ 0 হয় ret := ret + 'a', A--

  • ret রিটার্ন করুন

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

উদাহরণ

#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++-এ জাম্প গেম V (Jump Game V)

  2. C++-এ String at() মেথড ব্যবহার

  3. C++-এ স্ট্রিং টোকেনাইজেশন: স্ট্রিম এবং getline() ব্যবহার

  4. C++-এ স্ট্রিং টোকেনাইজ (Tokenize) করা