括号匹配深度,交错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。牛牛现在给你一个合法的括号序列,需要你计算出其深度。
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串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
输入描述:
输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'
输出描述:
输出一个整数,表示最长的满足要求的子串长度。
示例1
输出
复制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; }
不一样的烟火