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 3 minutes
              
            
            
          
          
          
            
              
                
                  Notes
                  
                    
                  
                
               
              
                
              
              
                
                  
                    
                  
                  
                  
                  
                  
                    
                  
                  
                    
                      
                        
  
  
                      
                        
                          not defined yet
                        
                      
                      
                    
                    
                  
        Code: 19:38:16 UTC,
        
          java,
        
        
          verify,
          
            
              result: Failed
            
          
          
        
      
      
      
      
    // you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Stack;
class Solution {
    public int solution(String S) {
        if(S.isEmpty()) return 1;
		if(S.length()==1) return 0;
		
		Stack<Character> stack = new Stack<>();		
		
		for(int i=0; i<S.length(); i++) {
			char current = S.charAt(i);
			char peek = stack.peek();
			switch (current) {
				case '}':
					if (!stack.isEmpty() && peek == '{') {
						stack.pop();
					} 
					else return 0;
					break;
				case ']':
					if (!stack.isEmpty() && peek == '[') {
						stack.pop();
					} 
					else return 0;
					break;
				case ')':
					if (!stack.isEmpty() && peek == '(') {
						stack.pop();
					} 
					else return 0;
					break;
				default:
					stack.push(current);
					break;
			}	
		}
		return stack.size()==0 ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
        
          expand all 
        
        Example tests
      
      
        
        
                1.
              
              
              
                
                  0.772 s
                
              
              
              
                
                  RUNTIME ERROR,
                  tested program terminated unexpectedly
                
                
              
            
                    
                      stderr:
                      
                Exception in thread "main" java.util.EmptyStackException at java.util.Stack.peek(Stack.java:102) at Solution.solution(Solution.java:18) at wrapper.run(wrapper.java:40) at wrapper.main(wrapper.java:29)
                1.
              
              
              
                
                  0.458 s
                
              
              
              
                
                  RUNTIME ERROR,
                  tested program terminated unexpectedly
                
                
              
            
                    
                      stderr:
                      
                Exception in thread "main" java.util.EmptyStackException at java.util.Stack.peek(Stack.java:102) at Solution.solution(Solution.java:18) at wrapper.run(wrapper.java:40) at wrapper.main(wrapper.java:29)
        Code: 19:40:06 UTC,
        
          java,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    // you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Stack;
class Solution {
    public int solution(String S) {
        if(S.isEmpty()) return 1;
		if(S.length()==1) return 0;
		
		Stack<Character> stack = new Stack<>();		
		
		for(int i=0; i<S.length(); i++) {
			char current = S.charAt(i);
			switch (current) {
				case '}':
					if (!stack.isEmpty() && stack.peek() == '{') {
						stack.pop();
					} 
					else return 0;
					break;
				case ']':
					if (!stack.isEmpty() && stack.peek() == '[') {
						stack.pop();
					} 
					else return 0;
					break;
				case ')':
					if (!stack.isEmpty() && stack.peek() == '(') {
						stack.pop();
					} 
					else return 0;
					break;
				default:
					stack.push(current);
					break;
			}	
		}
		return stack.size()==0 ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 19:40:16 UTC,
        
          java,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    // you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Stack;
class Solution {
    public int solution(String S) {
        if(S.isEmpty()) return 1;
		if(S.length()==1) return 0;
		
		Stack<Character> stack = new Stack<>();		
		
		for(int i=0; i<S.length(); i++) {
			char current = S.charAt(i);
			switch (current) {
				case '}':
					if (!stack.isEmpty() && stack.peek() == '{') {
						stack.pop();
					} 
					else return 0;
					break;
				case ']':
					if (!stack.isEmpty() && stack.peek() == '[') {
						stack.pop();
					} 
					else return 0;
					break;
				case ')':
					if (!stack.isEmpty() && stack.peek() == '(') {
						stack.pop();
					} 
					else return 0;
					break;
				default:
					stack.push(current);
					break;
			}	
		}
		return stack.size()==0 ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 19:40:20 UTC,
        
          java,
        
        
          final,
          
            score: 
              
                100
              
              
          
          
        
      
      
      
      
    // you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Stack;
class Solution {
    public int solution(String S) {
        if(S.isEmpty()) return 1;
		if(S.length()==1) return 0;
		
		Stack<Character> stack = new Stack<>();		
		
		for(int i=0; i<S.length(); i++) {
			char current = S.charAt(i);
			switch (current) {
				case '}':
					if (!stack.isEmpty() && stack.peek() == '{') {
						stack.pop();
					} 
					else return 0;
					break;
				case ']':
					if (!stack.isEmpty() && stack.peek() == '[') {
						stack.pop();
					} 
					else return 0;
					break;
				case ')':
					if (!stack.isEmpty() && stack.peek() == '(') {
						stack.pop();
					} 
					else return 0;
					break;
				default:
					stack.push(current);
					break;
			}	
		}
		return stack.size()==0 ? 1 : 0;
    }
}Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(N)
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  1.490 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.484 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  1.495 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  1.474 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  1.505 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  1.413 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  1.503 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.477 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  1.487 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  1.475 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  1.488 s
                
              
              
              
                
                  OK
                
                
              
            
        
          expand all 
        
        Performance tests
      
      
        
        
                1.
              
              
              
                
                  1.699 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.479 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  1.504 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  1.505 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.476 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  1.485 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  1.745 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.
              
              
              
                
                  1.563 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.539 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  1.549 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  1.562 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  1.501 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.
              
              
              
                
                  1.645 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  1.670 s
                
              
              
              
                
                  OK