Tasks Details
  
    
    
      
        
           
        
          
        
       
      
        
          
          
          
          
            
              
                
        
        
          
  
    
      
    
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
       
    
  
          
            
              
                
                
                  
                    
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
       
    
  
          
            
              
                
                
                  
                    
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
            
        
    
  
  
  
    
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
          
          
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
          
          
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
       
    
  
          
            
          
        
       
    
   
 
                      
                    
                  
                
              
            
          
          
        
      
    
  
    
          easy
        
        
            1.
            
              Brackets
            
          
          
            Determine whether a given string of parentheses (multiple types) is properly nested.
          
        
  
    
    Task Score
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Correctness
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Performance
    
    
  
  
    
      
        
          
            
        
      
    
  
        
              100%
            
          A string S consisting of N characters is considered to be properly nested if any of the following conditions is true:
- S is empty;
- S has the form "(U)" or "[U]" or "{U}" where U is a properly nested string;
- S has the form "VW" where V and W are properly nested strings.
For example, the string "{[()()]}" is properly nested but "([)()]" is not.
Write a function:
class Solution { public int solution(String S); }
that, given a string S consisting of N characters, returns 1 if S is properly nested and 0 otherwise.
For example, given S = "{[()()]}", the function should return 1 and given S = "([)()]", the function should return 0, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [0..200,000];
- string S is made only of the following characters: '(', '{', '[', ']', '}' and/or ')'.
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
              
            
          
            Solution
            
            
              
                
              
            
          
          
          
            
              Programming language used Java 21
            
          
          
            
            
              Time spent on task 1 minutes
              
            
            
          
          
          
            
              
                
                  Notes
                  
                    
                  
                
               
              
                
              
              
                
                  
                    
                  
                  
                  
                  
                  
                    
                  
                  
                    
                      
                        
  
  
                      
                        
                          not defined yet
                        
                      
                      
                    
                    
                  
        Code: 02:06:14 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    
        Code: 02:06:18 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    import java.util.*;
class Solution {
    public int solution(String S) {
        Stack<Character> stack = new Stack<>();
        
        for (char s : S.toCharArray()) {
            if ('(' == s || '[' == s || '{' == s) {
                stack.push(s);   
            } else if (!stack.empty()) {
                char pop = stack.pop();
                if (('(' == pop && ')' != s) ||
                    ('[' == pop && ']' != s) ||
                    ('{' == pop && '}' != s)
                ) {
                    return 0;
                }
            }
        }
        
        return stack.empty() ? 1 : 0;
    }
}
        Code: 02:06:46 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    import java.util.*;
class Solution {
    public int solution(String S) {
        Stack<Character> stack = new Stack<>();
        
        for (char s : S.toCharArray()) {
            if ('(' == s || '[' == s || '{' == s) {
                stack.push(s);   
            } else if (stack.empty()) {
                return 0;    
            } else {
                char pop = stack.pop();
                if (('(' == pop && ')' != s) ||
                    ('[' == pop && ']' != s) ||
                    ('{' == pop && '}' != s)
                ) {
                    return 0;
                }
            }
        }
        
        return stack.empty() ? 1 : 0;
    }
}
        Code: 02:07:00 UTC,
        
          java,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    import java.util.*;
class Solution {
    public int solution(String S) {
        Stack<Character> stack = new Stack<>();
        
        for (char s : S.toCharArray()) {
            if ('(' == s || '[' == s || '{' == s) {
                stack.push(s);   
            } else if (stack.empty()) {
                return 0;    
            } else {
                char pop = stack.pop();
                if (('(' == pop && ')' != s) ||
                    ('[' == pop && ']' != s) ||
                    ('{' == pop && '}' != s)
                ) {
                    return 0;
                }
            }
        }
        
        return stack.empty() ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
                      User test case 1:
                      
                  
                    ['{{{']
                    
                      User test case 2:
                      
                  
                  
                
              ['}{']
                    
        Code: 02:07:07 UTC,
        
          java,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    import java.util.*;
class Solution {
    public int solution(String S) {
        Stack<Character> stack = new Stack<>();
        
        for (char s : S.toCharArray()) {
            if ('(' == s || '[' == s || '{' == s) {
                stack.push(s);   
            } else if (stack.empty()) {
                return 0;    
            } else {
                char pop = stack.pop();
                if (('(' == pop && ')' != s) ||
                    ('[' == pop && ']' != s) ||
                    ('{' == pop && '}' != s)
                ) {
                    return 0;
                }
            }
        }
        
        return stack.empty() ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
                      User test case 1:
                      
                  
                    ['{{{']
                    
                      User test case 2:
                      
                  
                  
                
              ['}{']
                    
        Code: 02:07:13 UTC,
        
          java,
        
        
          final,
          
            score: 
              
                100
              
              
          
          
        
      
      
      
      
    import java.util.*;
class Solution {
    public int solution(String S) {
        Stack<Character> stack = new Stack<>();
        
        for (char s : S.toCharArray()) {
            if ('(' == s || '[' == s || '{' == s) {
                stack.push(s);   
            } else if (stack.empty()) {
                return 0;    
            } else {
                char pop = stack.pop();
                if (('(' == pop && ')' != s) ||
                    ('[' == pop && ']' != s) ||
                    ('{' == pop && '}' != s)
                ) {
                    return 0;
                }
            }
        }
        
        return stack.empty() ? 1 : 0;
    }
}Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(N)
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
        
          expand all 
        
        Performance tests
      
      
        
        
                1.
              
              
              
                
                  0.228 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.020 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.028 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.204 s
                
              
              
              
                
                  OK
                
                
              
            
            multiple_full_binary_trees
            
              
sequence of full trees of the form T=(TT), depths [1..10..1], with/without some brackets at the end, length=49K+
          
            sequence of full trees of the form T=(TT), depths [1..10..1], with/without some brackets at the end, length=49K+
✔
 
          
          
            OK
            
              
            
          
        
                1.
              
              
              
                
                  0.060 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.060 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.060 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.060 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.028 s
                
              
              
              
                
                  OK
                
                
              
            
            broad_tree_with_deep_paths
            
              
string of the form [TTT...T] of 300 T's, each T being '{{{...}}}' nested 200-fold, length=120K+
          
            string of the form [TTT...T] of 300 T's, each T being '{{{...}}}' nested 200-fold, length=120K+
✔
 
          
          
            OK
            
              
            
          
        
                1.
              
              
              
                
                  0.136 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.136 s
                
              
              
              
                
                  OK