he-001
1.000
Challenge · difficulty 3/5
# HumanEval/1
Implement a file **`solution.py`** that completes the function below. Keep the given name and signature; your file must define it at module level.
```python
from typing import List
def separate_paren_groups(paren_string: str) -> List[str]:
""" Input to this function is a string containing multiple groups of nested parentheses. Your goal is to
separate those group into separate strings and return the list of those.
Separate groups are balanced (each open brace is properly closed) and not nested within each other
Ignore any spaces in the input string.
>>> separate_paren_groups('( ) (( )) (( )( ))')
['()', '(())', '(()())']
"""
```
<!-- imported from OpenAI HumanEval (HumanEval/1) -->
tests/test_he_001.py
# Auto-generated from OpenAI HumanEval HumanEval/1. Do not edit by hand.
from solution import * # noqa: F401,F403 (prompt helpers may be referenced by tests)
from solution import separate_paren_groups as candidate
METADATA = {
'author': 'jt',
'dataset': 'test'
}
def check(candidate):
assert candidate('(()()) ((())) () ((())()())') == [
'(()())', '((()))', '()', '((())()())'
]
assert candidate('() (()) ((())) (((())))') == [
'()', '(())', '((()))', '(((())))'
]
assert candidate('(()(())((())))') == [
'(()(())((())))'
]
assert candidate('( ) (( )) (( )( ))') == ['()', '(())', '(()())']
def test_he_001():
check(candidate)
Proposed solution
```python
from typing import List
def separate_paren_groups(paren_string: str) -> List[str]:
result = []
current = []
level = 0
for char in paren_string:
if char == ' ':
continue
if char == '(':
level += 1
current.append(char)
elif char == ')':
level -= 1
current.append(char)
if level == 0:
result.append(''.join(current))
current = []
return result
```Test output (stdout)
. [100%]
1 passed in 0.01s