यहां हम एक दिलचस्प समस्या देखेंगे। हमें यह जांचना है कि किसी स्ट्रिंग में 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