栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

3991. 满足条件的01串-AcWing题库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

3991. 满足条件的01串-AcWing题库

作者 : Xia Xinyu
日期 : 2021-10-02

原题链接

给定一个 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

思路:仔细读题才行,因为不细心卡了好久,重点是每个0的两边至少有一个1这句话的意思是在0的两边可以有一个1也可以有两个1 代码
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int T = in.nextInt();
        while(T -- != 0){
            boolean flag = true;
            int n = in.nextInt();
            String s = in.next();
            for(int i = 0;i < s.length() - 1;i ++){
                if(s.charAt(i) == '1' && s.charAt(i + 1) == '1'){
                    flag = false;
                    break;
                }
            }
            for(int i = 1;i < s.length() - 1;i ++){
                if(s.charAt(i) == '0'){
                    if(s.charAt(i - 1) != '1' && s.charAt(i + 1) != '1')
                    {
                        flag = false;
                        break;
                    }
                }
            }
            if(s.length() > 1 && ((s.charAt(0) == '0' && s.charAt(1) == '0') ||(s.charAt(s.length() - 1)) == '0' && (s.charAt(s.length() - 2) == '0')))
                flag = false;
            if(s.length() == 1 && s.charAt(0) == '0') flag = false;
            if(flag) System.out.println("Yes");
            else System.out.println("No");
        }
    }
}

时间复杂度:O(n) n为01字符串的长度 空间复杂度:O(1)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号