Tasks Details
  
    
    
      
        
           
        
          
        
       
      
        
          
          
          
          
            
              
                
        
        
          
  
    
      
    
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
         
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
            
        
    
  
  
  
    
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
          
          
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
          
          
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
       
    
  
          
            
          
        
       
    
   
 
                      
                    
                  
                
              
            
          
          
        
      
    
  
    
          easy
        
        
            1.
            
              Nesting
            
          
          
            Determine whether a given string of parentheses (single type) is properly nested.
          
        
  
    
    Task Score
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Correctness
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Performance
    
    
  
  
    
      
        
          
            
        
      
    
  
        
              100%
            
          A string S consisting of N characters is called properly nested if:
- S is empty;
- S has the form "(U)" where U is a properly nested string;
- S has the form "VW" where V and W are properly nested strings.
For example, string "(()(())())" is properly nested but string "())" isn't.
Write a function:
class Solution { public int solution(String S); }
that, given a string S consisting of N characters, returns 1 if string 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..1,000,000];
- string S is made only of the 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: 05:17:06 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    
        Code: 05:17:36 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    // 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) {
        Stack<Character> stack = new Stack<>();
        for (cha)
    }
}
        Code: 05:18:07 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    // 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(': stack.push(c); break;
                case ')':
                    if (stack.is)
            }
        }
    }
}
        Code: 05:18:30 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    // 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(': stack.push(c); break;
                case ')':
                    if (stack.isEmpty() || statck.pop() != '(') {
                        return 0;
                    }
            }
        }
    }
}
        Code: 05:18:46 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    // 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || statck.pop() != '(') {
                        return 0;
                    }
                default:
                    break;
            }
        }
    }
}
        Code: 05:18:56 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || statck.pop() != '(') {
                        return 0;
                    }
                default:
                    break;
            }
        }
        return stack.isEmpty() ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
    Compile error
    Solution.java:18: error: cannot find symbol
                    if (stack.isEmpty() || statck.pop() != '(') {
                                           ^
  symbol:   variable statck
  location: class Solution
1 error
  
          
            
          
        
      
        Code: 05:19:05 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || stack.pop() != '(') {
                        return 0;
                    }
                default:
                    break;
            }
        }
        return stack.isEmpty() ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 05:19:13 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || stack.pop() != '(') {
                        return 0;
                    }
                default:
                    break;
            }
        }
        return stack.isEmpty() ? 1 : 0;
    }
}
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 05:19:17 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) {
        Stack<Character> stack = new Stack<>();
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(c);
                    break;
                case ')':
                    if (stack.isEmpty() || stack.pop() != '(') {
                        return 0;
                    }
                default:
                    break;
            }
        }
        return stack.isEmpty() ? 1 : 0;
    }
}
Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(N)
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.012 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.012 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
        
          expand all 
        
        Performance tests
      
      
        
        
                1.
              
              
              
                
                  0.032 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.032 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.204 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
            multiple_full_binary_trees
            
              
sequence of full trees of the form T=(TT), depths [1..10..1], with/without unmatched ')' at the end, length=49K+
          
            sequence of full trees of the form T=(TT), depths [1..10..1], with/without unmatched ')' at the end, length=49K+
✔
 
          
          
            OK
            
              
            
          
        
                1.
              
              
              
                
                  0.060 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.064 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
            broad_tree_with_deep_paths
            
              
string of the form (TTT...T) of 300 T's, each T being '(((...)))' nested 200-fold, length=1 million
          
            string of the form (TTT...T) of 300 T's, each T being '(((...)))' nested 200-fold, length=1 million
✔
 
          
          
            OK
            
              
            
          
        
                1.
              
              
              
                
                  1.064 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.012 s
                
              
              
              
                
                  OK