[スタック]かっこを回転
#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を返す.
Reference
この問題について([スタック]かっこを回転), 我々は、より多くの情報をここで見つけました https://velog.io/@isg/스택-괄호-회전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol