[PRODrammers]カッコを回転
2647 ワード
質問元:カッコを回転[programmers]、https://programmers.co.kr/learn/courses/30/lessons/76502
👨🏫質問する
()、[]および{}は有効なカッコ文字列です. Aが有効な括弧文字列である場合、(A)、[A]および{A}も有効な括弧文字列である.たとえば、[]は有効な括弧文字列であり、([])も有効な括弧文字列である. A、Bが有効な括弧文字列であれば、ABも有効な括弧文字列である.たとえば、{}および([])は有効なカッコ文字列であり、{}([])も有効なカッコ文字列です. パラメトリック文字列sは、四角カッコ、大かっこ、小かっこからなる.sをx(0≦x<(sの長さ)格子に左に回転すると、solution関数を完了し、sを正しいカッコ文字列にするxの個数を返します.
せいげんじょうけん sの長さは1または1000以上です. サンプルI/O
👨🏫質問する
次の規則に従う文字列は、有効なカッコ文字列として定義されます.
せいげんじょうけん
サンプルI/O
sresult"{}" 3"}]()[{"2"[)(]"0"}}}"0
I/O例説明
I/O例#1
下表は「「」が回転していることを示します。
2xsを左に回転するx格子の括弧文字列?0"{}"O 1"(){}["X 2"{}[]["O 3"{}[]("X 4"{}"O 5"}{"Xは、3つのxが有効な括弧文字列であるため、3を返さなければならない.I/O例#2下表は"}"()[{"回転を示す.xsを左に回転するx格子の括弧文字列?0"}[{"X 1"{}[{}"X 2"()[{}"X 2"()[{}"X 2"[{}][{}]O 3][{}][{}]]][{}]][{}]]][{}]][{}]]][{}]][{}]]][{}]]X4"[{}]()「O 5」{}]()["X是2个x是有效的括弧文字列,所以必须返还2的.I/O例#3 s,即使不能转变正确的卡科文字列,必须返还0.I/O例#4 s,也不能做正确的卡科文字列,必须返还0.💻コードはjavaにインポートされます。util.Stack;
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder(s);
//文字列が有効な括弧文字列の場合は、答えを追加します。
for(int i = 0; i < s.length(); i++){
if(isCorrect(sb.toString())){
answer++;
}
//一番前の括弧を抜き、文字列の後ろに挿入します。
sb.append(sb.charAt(0));
sb.deleteCharAt(0);
}
return answer;
}
//伝達パラメータとして受信した文字列が有効な文字列であればtrueまたはfalseの関数を返します。
static boolean isCorrect(String str){
Stack<Character> stack = new Stack<>();
char first = str.charAt(0);
//一番前の括弧が閉じている場合はチェックせず、すぐにfalseに戻ります
if(first == ')' || first == '}' || first == ']'){
return false;
}
stack.push(first);
//開いた括弧の後ろに閉じた括弧がある場合、stackでpop
for(int i = 1; i < str.length(); i++){
char c = str.charAt(i);
if(stack.isEmpty()){
stack.push(c);
continue;
}
char peek = stack.peek();
if(peek == '(' && c == ')'){
stack.pop();
}else if(peek == '{' && c == '}'){
stack.pop();
}else if(peek == '[' && c == ']'){
stack.pop();
}else{
stack.push(c);
}
}
//スタックが空の場合は、有効なカッコ文字列であるためtrueを返します。
if(stack.isEmpty()){
return true;
}
return false;
}
}💡后记:韩国的安装问题哦!😁但这次不仅仅是括弧,还有括弧和括弧,所以条件文变长了一些。😔但是,没有从用stack解决问题的框架中脱离很大,而且解决方法的速度也很速,没有例外,马上解决了.
Reference
この問題について([PRODrammers]カッコを回転), 我々は、より多くの情報をここで見つけました
https://velog.io/@jaeung5169/Programmers-괄호-회전하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([PRODrammers]カッコを回転), 我々は、より多くの情報をここで見つけました https://velog.io/@jaeung5169/Programmers-괄호-회전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol