এখানে আমরা একটি আকর্ষণীয় সমস্যা দেখব। আমাদের যাচাই করতে হবে একটি স্ট্রিং-এ ১ গুলোর মধ্যে ০ আছে কিনা। যদি না থাকে, তবে স্ট্রিংটি বৈধ, অন্যথায় অবৈধ।
মনে করুন তিনটি স্ট্রিং আছে:
- 10001111010
- 00001111100
- 01111101111
এই তিনটি স্ট্রিংয়ের মধ্যে শুধু B বৈধ, কারণ ১ গুলোর ধারার মধ্যে কোনো ০ নেই।
এই সমস্যা সমাধানের জন্য, আমরা স্ট্রিং-এ প্রথম ১ এর ইনডেক্স এবং শেষ ১ এর ইনডেক্স খুঁজে বের করব। তারপর এই দুটি ইনডেক্সের মধ্যে কোনো ০ আছে কিনা তা চেক করব। যদি থাকে, তবে false রিটার্ন করব, অন্যথায় true (বৈধ হিসেবে)।
উদাহরণ (C++ কোড)
#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