• 括号匹配深度,交错01字符串(一个类型代码)


    题目描述

    一个合法的括号匹配序列有以下定义:
    1、空串""是一个合法的括号匹配序列
    2、如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列
    3、如果"X"是一个合法的括号匹配序列,那么"(X)"也是一个合法的括号匹配序列
    4、每个合法的括号序列都可以由以上规则生成。
    例如: "","()","()()","((()))"都是合法的括号序列
    对于一个合法的括号序列我们又有以下定义它的深度:
    1、空串""的深度是0
    2、如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y) 3、如果"X"的深度是x,那么字符串"(X)"的深度是x+1
    例如: "()()()"的深度是1,"((()))"的深度是3。牛牛现在给你一个合法的括号序列,需要你计算出其深度。

    输入描述:

    输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含'('和')'。

    输出描述:

    输出一个正整数,即这个序列的深度。
    示例1

    输入

    复制
    (())

    输出

    复制
    2
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
    
    int main()
    {
    
        string str;
        getline(cin,str);
    
        int _max=0,now_max=0;
        for(int j=0;j<str.size();j++)
        {
            if(str[j]=='(')
            {
                now_max++;
                _max=(_max > now_max? _max:now_max);
            }
            else
            {//计算后面的括号深度
            now_max--;
            //之前写的是now_max=0;有一组测试无法通过
            //忘记了一种情况"(((()(()))))"出现右括号之后里面可能嵌套很多左括号,此时重新计数就算少了
    
            }
    
        }
    
        cout<<_max<<endl;
    
    
    
        //cout << "Hello world!" << endl;
        return 0;
    }
    /*
    用例:
    (((((((()(()((()))))))))))
    对应输出应该为:
    11
    你的输出为:
    8
    */

    题目描述

    如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
    小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。

    输入描述:

    输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'

    输出描述:

    输出一个整数,表示最长的满足要求的子串长度。
    示例1

    输入

    复制
    111101111

    输出

    复制
    3
    #include <iostream>
    #include <string>
    #include <vector>
    #include <sstream>
    #include <algorithm>
    using namespace std;
     
      
    int main(){
        vector<char> v;
        char k;
        //cin>>n;
        while(cin>>k)
           v.push_back(k);
        int len=1;
        int max=1;
       
     
        for(int j=1;j<v.size();j++)
        {
            if(v[j]!=v[j-1])
            {
                len++;
                max=(max>len)?max:len;
                continue;
            }
            len=1;
        }
      cout<<max<<endl;
      
    return 0;
    }
    不一样的烟火
  • 相关阅读:
    机器学习规则:ML工程最佳实践----rules_of_ml section 2【翻译】
    机器学习规则:ML工程最佳实践----rule_of_ml section 3【翻译】
    知识图谱技术分享会----有关知识图谱构建的部分关键技术简介及思考
    【e2Open】
    【2B】企业供应链管理软件
    【交互】复杂逻辑配置的一个不错的方法(神策数据)
    【视觉】交易数据展示
    【视觉】数据平台
    【设计复盘】APP设计复盘
    【设计规范】腾讯课堂
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11041045.html
Copyright © 2020-2023  润新知