ধরুন আমাদের একটি বাইনারি স্ট্রিং S এবং একটি ধনাত্মক পূর্ণসংখ্যা N আছে, আমাদেরকে সত্য বলতে হবে যদি এবং শুধুমাত্র যদি 1 থেকে N পর্যন্ত প্রতিটি পূর্ণসংখ্যা X এর জন্য, X এর বাইনারি উপস্থাপনাটি প্রদত্ত S এর একটি সাবস্ট্রিং। তাই যদি S =“0110 ” এবং N =3, তাহলে ফলাফলটি সত্য হবে, কারণ 1, 10 এবং 11 সবই 0110 এ উপস্থিত রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
রূপান্তর করার একটি পদ্ধতি সংজ্ঞায়িত করুন(), যা n ইনপুট হিসাবে গ্রহণ করবে
-
ret :=একটি খালি স্ট্রিং
-
যখন n 0 নয়
-
ret :=ret concatenate n mod 2
-
n :=n / 2
-
-
রিভার্স রিট এবং রিটার্ন
-
মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
-
i এর জন্য :=N, যখন i>=N/2, i কমিয়ে আনুন 1
-
temp :=রূপান্তর(i)
-
যদি তাপমাত্রা S-তে না থাকে, তাহলে মিথ্যা ফেরত দিন
-
-
প্রত্যাবর্তন সত্য।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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