사용자 입력 문자열에서 대괄호 집합이 닫혀 있는지 확인하는 프로그램을 작성하고 있지만 어떻게해야하는지 혼란 스럽습니다. 스택을 사용하여이를 수행하십시오.밸런스 스택을 사용하여 문자열에서 대괄호가 닫혀 있는지 확인하십시오.
제 아이디어는 괄호가있는 경우 스택에 추가 한 다음 닫는 괄호가 나타나면 스택에서 상위 두 개의 문자를 튀어 나오게하고 두 번째로 튀어 나온 문자가 첫 번째 문자와 일치하는지 (예 : 대괄호가 일치하고 여는 대괄호와 닫는 대괄호) 행이 균형을 이룹니다. 그러나, 나는 예를 들어, 그들에 여러 브래킷과 문자로 문자열을 작업 할 수 있어야합니다 :
wfsfs[{{{(s;dkls(dslkf)s;dlkf}]}]}}}sd
내가 스택을 사용하여이 작업을하는 방법에 대한 정말 혼란 스러워요! 어떤 아이디어?
다음는 기본적으로 지금까지 함께했다 코드이지만 여러 괄호
작동하지 않습니다for (int i = 0; i < x.length(); i++){
if (x.charAt(i) == '('){
stack.push('(');
}
if (x.charAt(i) == '['){
stack.push('(');
}
if (x.charAt(i) == '{'){
stack.push('(');
}
if (x.charAt(i) == ')'){
stack.pop();
if (stack.empty()){
return true;
}
if (stack.pop() != ')'){
return true;
}
}
if (x.charAt(i) == ']'){
stack.pop();
if (stack.empty()){
return true;
}
if (stack.pop() != ']'){
return true;
}
}
if (x.charAt(i) == '}'){
stack.pop();
if (stack.empty()){
return true;
}
if (stack.pop() != '}'){
return true;
}
}
}
return false;
}
}
편집 : "X"는 inputed 문장
오, 흠 이제 내가 어쩌면 내가 각 스택에있는 항목의 양을 측정 할 수 있고 두 개로 균등하게 나누면 패스라고 생각할 것입니다. – maribov
꼭 필요한 것은 아니며 푸시 앤 팝 메카닉을 사용하고 싶습니다. . 나는 {{{{그리고 단지 두 개로 나눈 것을 확인하면 통과 할 것입니다. –
오 좋은 지적입니다. 흠.하지만 어떻게해야할까요? 예를 들어 시리즈가 [[]]와 유사하다면 어디에서 가장 좋아하는 브래킷이되지 않을까요? – maribov