Untitled

 avatar
unknown
c_cpp
a year ago
2.1 kB
7
Indexable
#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";
}