Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบสตริงไบนารีว่ามี 0 อยู่ระหว่าง 1 หรือไม่ใน C++


นี่คือโจทย์น่าสนใจอีกข้อหนึ่ง เราต้องตรวจสอบว่าสตริงมี 0 อยู่ระหว่าง 1 หรือไม่ หากไม่มี สตริงถือว่าถูกต้อง มิฉะนั้นไม่ถูกต้อง

สมมติมีสตริง 3 สตริง −

  • 10001111010
  • 00001111100
  • 01111101111

จาก 3 สตริงนี้ มีเพียง B (00001111100) ที่ถูกต้อง เพราะไม่มี 0 อยู่ภายในกลุ่มของ 1

วิธีแก้คือ หา index ของ 1 ตัวแรก และ 1 ตัวสุดท้าย แล้วตรวจสอบว่ามี 0 อยู่ระหว่าง index ทั้งสองนี้หรือไม่ หากมี คืนค่า false มิฉะนั้น true

ตัวอย่าง

#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