1. 程式人生 > >愛奇藝2018秋季校招演算法工程師(第一場)[程式設計題]括號匹配深度

愛奇藝2018秋季校招演算法工程師(第一場)[程式設計題]括號匹配深度

時間限制: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;
}