愛奇藝2018秋季校招演算法工程師(第一場)[程式設計題]括號匹配深度
阿新 • • 發佈:2018-12-10
時間限制:1秒 空間限制:32768K 來源:牛客網
一個合法的括號匹配序列有以下定義:
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:
(())
輸出例子1:
2
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string s; cin >> s; int max_depth = 0; vector<char>vec; int i = 0; while (i < s.length()) { int depth = 0; while (s[i] == '(') { vec.push_back(s[i]); i++; } depth = vec.size(); if (depth > max_depth) max_depth = depth; while (s[i] == ')') { vec.pop_back(); i++; } } cout << max_depth; return 0; }