মান লেযিয়ে একটি বাইনারি স্ট্রিং S এবং একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া আছে। আমাদের true রিটার্ন করতে হবে যদি এবং কেবল যদি ১ থেকে N পর্যন্ত প্রতিটি পূর্ণসংখ্যা X-এর বাইনারি রিপ্রেজেন্টেশন S-এর সাবস্ট্রিং হিসেবে উপস্থিত থাকে। S = "0110" এবং N = 3 হলে ফলাফল হবে true, কারণ ১, ১০ এবং ১১ সব 0110-এ আছে।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -
convert() নামে একটি মেথড সংজ্ঞায়িত করুন, যা n ইনপুট নেবে
ret := খালি স্ট্রিং
যখন n != ০
ret := ret + (n % 2)
n := n / 2
ret রিভার্স করুন এবং রিটার্ন করুন
মেইন মেথড থেকে - i = N থেকে i >= N/2 পর্যন্ত i-- করুন
temp := convert(i)
যদি temp S-এ না থাকে, false রিটার্ন করুন
true রিটার্ন করুন
নিচের বাস্তবায়নটি দেখে আরও ভালো বুঝতে পারবেন -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: string convert(int n){ string ret = ""; while(n){ ret += (n % 2) + '0'; n /= 2; } reverse(ret.begin(), ret.end()); return ret; } bool queryString(string S, int N) { for(int i = N; i >= N/2; i-- ){ string temp = convert(i); if(S.find(temp) == string::npos) return false; } return true; } }; main(){ Solution ob; cout << (ob.queryString("0110", 3)); }ইনপুট
"0110" 3
আউটপুট
1