[スタック]かっこを回転


#include <string>
#include <vector>
#include <stack>

using namespace std;

int solution(string s) {
    int answer = 0;
    int check = 0;
    stack<char> bucket;
    int i=0,j=0;
    int length = s.size();
    if(length%2==1){
        return 0;
    }
    for(i=0;i<length;i++){
        check=0;
        for(j=0;j<length;j++){
            if(s[j]=='{'||s[j]=='['||s[j]=='('){
                bucket.push(s[j]);
            }
            else if(s[j]=='}'&& bucket.top()=='{'){
                bucket.pop();
                check++;
            }
            else if(s[j]==']'&& bucket.top()=='['){
                bucket.pop();
                check++;
            }
            else if(s[j]==')'&& bucket.top()=='('){
                bucket.pop();
                check++;
            }

        }
        if(check == length/2){
            answer++;
        }
        s += s[0];
        s = s.substr(1);   
        while(!bucket.empty()){
            bucket.pop();
        }
    }
    return answer;
}
文字列の長さが/2を満たす場合、応答++を追加することによって実現される.
このとき,文字列の長さが奇数であれば,回転してもすべての括弧を満たすことができないので,直接0を返す.