এখানে আমরা একটি আকর্ষণীয় সমস্যা দেখতে পাব। আমাদের চেক করতে হবে একটি স্ট্রিং 1s এর মধ্যে 0 আছে কি না। যদি না হয়, তাহলে স্ট্রিংটি বৈধ, অন্যথায় অবৈধ৷ ধরুন তিনটি স্ট্রিং আছে −
- 10001111010
- 00001111100
- 01111101111
এই তিনটি স্ট্রিং থেকে, শুধুমাত্র B বৈধ, কারণ 1s এর স্ট্রিমের ভিতরে কোন 0 নেই
এই সমস্যাটি সমাধান করার জন্য, আমরা স্ট্রিংটিতে উপস্থিত প্রথম 1-এর সূচকটি খুঁজে পাব, এবং শেষ 1-এর সূচকটিও খুঁজে বের করব। তারপর আমরা পরীক্ষা করব, এই দুটি সূচক থেকে কোন 0 আছে কি, যদি তাই হয়, তাহলে মিথ্যা দিন, অন্যথায়। সত্য (বৈধ হিসাবে)
উদাহরণ
#include <iostream> using namespace std; bool hasZeroInOnes(string str) { int first, last; for(first = 0; first < str.length(); first++){ if(str[first] == '1') break; } for(last = str.length() - 1; last >= 0; last--){ if(str[last] == '1') break; } for(int i = first+1; i < last; i++){ if(str[i] == '0') return false; } return true; } int main() { string str = "00001111100"; if(hasZeroInOnes(str)){ cout << str << " is a valid string"; } else { cout << str << " is NOT a valid string"; } }
আউটপুট
00001111100 is a valid string