满足条件的01串

满足条件的01串

给定一个 01 串,如果同时满足下列两个条件,则输出Yes,否则输出No

  1. 不存在两个相邻的 1
  2. 每个 0 两边至少有一个 1

输入格式

第一行包含整数 T,表示共有 T组测试数据。

每组数据第一行包含整数 n

第二行包含一个长度为 n 的 01 字符串。

输出格式

每组数据输出一行结果,如果同时满足两个条件,输出 Yes,否则输出 No

数据范围

前三个测试点满足,1n100
所有测试点满足,1T101n1000
同一测试点内,所有 n 相加之和不超过 1000

输入样例:

3
3
101
4
1011
5
10001

输出样例:

Yes
No
No

折磨题:

  做了好长时间明明很简单。。。做题不要急,思路要清晰。。。。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int T, l, flag;
string s;
int main(){
    cin >> T;
    while(T--){
        cin >> l;
        cin >> s;
        flag = 0;
        for(int i = 0; i < l; i++){
            if(s[i] == '1' && s[i + 1] == '1'){
                printf("No\n");
                flag = 1;
                break;
            }
            if(s[i] == '0'){
                if(s[i + 1] != '1' && s[i - 1] != '1'){//这样写,可以解决字符串 "0"  的情况                         
                    printf("No\n");
                    flag = 1;
                    break;
                }
            }
        }
        if(flag == 1)continue;
        
        printf("Yes\n");
    }
    
    return 0;
}

  

 

 
posted @ 2021-10-15 11:04  荣荣荣荣荣荣  阅读(159)  评论(0)    收藏  举报