Untitled
unknown
c_cpp
2 months ago
2.1 kB
6
Indexable
Never
#include <iostream> #include <string> using namespace std; class stack { public: stack(): top(-1), size(10){ arr = new char[size]; } void push (char x); void pop(); char Top(); int isEmpty(); private: int top; int left; int size; char *arr; }; void stack::push(char x) { if(top == size-1) { char *newArr = new char[size*2]; for(int i = 0; i < size; i++) { newArr[i] = arr[i]; } delete[] arr; arr = newArr; size *= 2; } arr[++top] = x; } void stack::pop() { if(top == -1) return; else top--; } char stack::Top() { if(top == -1) return '!'; else return arr[top]; } int stack::isEmpty() { if(top == -1) return 1; else return 0; } int main() { int n; cin >> n; char ans[100005]; for(int j = 0; j < n; j++) { string s; stack myStack; // store the left parenthesis index int len = 0; int longest_len = 0; cin >> s; int sLen = s.length(); for(int i = 0; i < sLen; i++) { if(s[i] == ')') { if(!myStack.isEmpty()) { if(s[myStack.Top()] == '(') { s[myStack.Top()] = '.'; s[i] = '.'; myStack.pop(); } else { // ')' while(!myStack.isEmpty()) myStack.pop(); } } } else { // c == '(' myStack.push(i); } } for(int i = 0; i < sLen; i++) { if(s[i] == '.') { len++; } else { longest_len = max(longest_len, len); len = 0; } } longest_len = max(longest_len, len); ans[j] = char(((longest_len / 2) % 26) + 'a'); } for(int i = 0; i < n; i++){ std::cout << ans[i]; } std::cout << "\n"; }