满足条件的01串
满足条件的01串
给定一个 01 串,如果同时满足下列两个条件,则输出Yes,否则输出No:
- 不存在两个相邻的 1
- 每个 0 两边至少有一个 1
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据第一行包含整数 n。
第二行包含一个长度为 n 的 01 字符串。
输出格式
每组数据输出一行结果,如果同时满足两个条件,输出 Yes,否则输出 No。
数据范围
前三个测试点满足,1≤n≤100。
所有测试点满足,1≤T≤10,1≤n≤1000。
同一测试点内,所有 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;
}

浙公网安备 33010602011771号