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 1 minutes
              
            
            
          
          
          
            
              
                
                  Notes
                  
                    
                  
                
               
              
                
              
              
                
                  
                    
                  
                  
                  
                  
                  
                    
                  
                  
                    
                      
                        
  
  
                      
                        
                          not defined yet
                        
                      
                      
                    
                    
                  
        Code: 14:11:06 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    
        Code: 14:11:33 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");
class Solution {
    public int solution(String S) {
        // write your code in Java SE 8
        int res=0;
        Stack s = new Stack();
        int n= S.length();
        if (n%2!=0)
            return 0;
        for (char c: S.toCharArray()) {
            if (isOpenBracket(c))
            s.push(c);
            else{
                if (s.isEmpty())
                    return 0;
                char l = (char) s.pop();
                if (!isPair(l,c))
                    return 0;
            }
        }
        if (s.isEmpty())
        return 1;
        else
            return 0;
    }
    static Boolean isOpenBracket( char c){
        if ( c=='(')
            return true;
        else
            return false;
    }
    public static Boolean  isPair(char l, char r){
        return l == '(' && r == ')';
    }
}
            
          Analysis 
          
            
          
        
        
          
  
    Compile error
    Solution.java:11: error: cannot find symbol
        Stack s = new Stack();
        ^
  symbol:   class Stack
  location: class Solution
Solution.java:11: error: cannot find symbol
        Stack s = new Stack();
                      ^
  symbol:   class Stack
  location: class Solution
2 errors
  
          
            
          
        
      
        Code: 14:11:43 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");
class Solution {
    public int solution(String S) {
        // write your code in Java SE 8
        int res=0;
        Stack s = new Stack();
        int n= S.length();
        if (n%2!=0)
            return 0;
        for (char c: S.toCharArray()) {
            if (isOpenBracket(c))
            s.push(c);
            else{
                if (s.isEmpty())
                    return 0;
                char l = (char) s.pop();
                if (!isPair(l,c))
                    return 0;
            }
        }
        if (s.isEmpty())
        return 1;
        else
            return 0;
    }
    static Boolean isOpenBracket( char c){
        if ( c=='(')
            return true;
        else
            return false;
    }
    public static Boolean  isPair(char l, char r){
        return l == '(' && r == ')';
    }
}
            
        Code: 14:11:44 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");
class Solution {
    public int solution(String S) {
        // write your code in Java SE 8
        int res=0;
        Stack s = new Stack();
        int n= S.length();
        if (n%2!=0)
            return 0;
        for (char c: S.toCharArray()) {
            if (isOpenBracket(c))
            s.push(c);
            else{
                if (s.isEmpty())
                    return 0;
                char l = (char) s.pop();
                if (!isPair(l,c))
                    return 0;
            }
        }
        if (s.isEmpty())
        return 1;
        else
            return 0;
    }
    static Boolean isOpenBracket( char c){
        if ( c=='(')
            return true;
        else
            return false;
    }
    public static Boolean  isPair(char l, char r){
        return l == '(' && r == ')';
    }
}
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 14:11:52 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");
class Solution {
    public int solution(String S) {
        // write your code in Java SE 8
        int res=0;
        Stack s = new Stack();
        int n= S.length();
        if (n%2!=0)
            return 0;
        for (char c: S.toCharArray()) {
            if (isOpenBracket(c))
            s.push(c);
            else{
                if (s.isEmpty())
                    return 0;
                char l = (char) s.pop();
                if (!isPair(l,c))
                    return 0;
            }
        }
        if (s.isEmpty())
        return 1;
        else
            return 0;
    }
    static Boolean isOpenBracket( char c){
        if ( c=='(')
            return true;
        else
            return false;
    }
    public static Boolean  isPair(char l, char r){
        return l == '(' && r == ')';
    }
}
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 14:11:57 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");
class Solution {
    public int solution(String S) {
        // write your code in Java SE 8
        int res=0;
        Stack s = new Stack();
        int n= S.length();
        if (n%2!=0)
            return 0;
        for (char c: S.toCharArray()) {
            if (isOpenBracket(c))
            s.push(c);
            else{
                if (s.isEmpty())
                    return 0;
                char l = (char) s.pop();
                if (!isPair(l,c))
                    return 0;
            }
        }
        if (s.isEmpty())
        return 1;
        else
            return 0;
    }
    static Boolean isOpenBracket( char c){
        if ( c=='(')
            return true;
        else
            return false;
    }
    public static Boolean  isPair(char l, char r){
        return l == '(' && r == ')';
    }
}
            Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(N)
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK
                
                
              
            
        
          expand all 
        
        Performance tests
      
      
        
        
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.016 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.004 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.248 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.076 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.032 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.312 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.008 s
                
              
              
              
                
                  OK