우리는 parens 그룹 을 열린 paren (
, 그와 일치하는 close paren )
및 그 안의 모든 것을 호출 합니다.
괄호 그룹 또는 문자열이 괄호로 균형을 이룬 2 개의 괄호 그룹이 없거나 괄호로 묶인 경우 괄호 그룹 또는 문자열을 괄호 밸런싱 이라고 합니다.
예를 들면 다음과 같습니다.
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
마찬가지로:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
따라서 괄호로 묶인 문자열 또는 파 렌스 그룹은 다음 중 하나 여야합니다.
- 전혀 포함하지 않습니다.
- 또는 정확히 2 개의 괄호로 균형 잡힌 parens 그룹을 포함하십시오. 다른 것은 포함하지 않아야합니다.
직무:
당신의 임무는 주어진 문자열이 괄호로 균형이 잡힌 문자열인지 확인하는 함수 또는 프로그램을 작성하는 것입니다.
입력:
입력은 문자열 또는 문자 목록 또는 이와 유사한 것입니다. 문자열은 '('
및 문자로만 구성되어 있다고 가정 할 수 있습니다 ')'
. 또한 각 열린 paren (
이 일치하는 close paren을 가질 것이라고 가정 할 수 )
있으므로 "((("
or ")("
또는 "(())("
... 와 같은 문자열에 대해 걱정하지 마십시오 .
참고 : 로 자신의 의견 우는 소리에 @DigitalTrauma 언급, 그것은 subtitute 괜찮은지 ()
(예 : 다른 문자로 콤보를 <>
, []
그 어떤 언어로 탈출과 같은 추가 작업을 일으키는 경우, ...)
산출:
문자열이 괄호로 균형을 이루는 지 여부를 나타내는 모든 것 (true 또는 false, 1 또는 0, ...). 귀하의 기능 / 프로그램이 기대하는 결과를 답에 포함 시키십시오.
예 :
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
마지막 두 예는 실제로 차이를 만들었습니다!
행운을 빌어 요!
"(()())()"
로 표시됩니다 [0, 0, 1, 0, 1, 1, 0, 1]
. 이것은 입력을 문자 코드로 변환 한 다음 빼는 필요성을 제거합니다.