Top Coder SRM 628 Div 2 - 500 Point

If you are participate in Top Coder SRM 628 Div 2, this is solution for 500 point

import java.util.ArrayList;

public class BracketExpressions {

public static String ifPossible(String expression){
    Character [] pattern1 = new Character[]{'{','}'};
    Character [] pattern2 = new Character[]{'(',')'};
    Character [] pattern3 = new Character[]{'[',']'};
    char[] y = expression.toCharArray();
    ArrayList<Character> data = new ArrayList<Character>();
    for (int i = 0; i < y.length; i++) {
        System.out.println("processing " + ((data.size()>0)?data.get(0).toString():-1) + " and " + y[i] );
        if (data.size() > 0 && data.get(0) != 'X' && y[i] == 'X'){
            System.out.println("Pop " + data.get(0) + " because meet X");
            data.remove(0);
        }
        else if (y[i] == pattern1[0] || y[i] == pattern2[0]|| y[i] == pattern3[0] || y[i] == 'X' )
        {
            System.out.println("Push " + y[i]);
                data.add(0, y[i]);
        }

            else if (y[i] == pattern1[1] || y[i] == pattern2[1]|| y[i] == pattern3[1]) {
                if (data.size() > 0){
                    if (lawan(data.get(0)) == y[i] || data.get(0) == 'X'){
                        System.out.println("Pop " + data.get(0) + " " + y[i]);
                        data.remove(0);
                    }
                    else{
                        return "impossible";
                    }   
                }else{
                    return "impossible";
                }
            }
        }
        if (data.size() > 0)
        {
            return "impossible";
        }
        return "possible";      
    }
    public static Character lawan(Character a){
        if (a== '{')return '}';
        else if (a== '[')return ']';
        else return ')';
    }
}
 
1
Kudos
 
1
Kudos

Now read this

Fast inverse square root

Fast inverse square root in hexadecimal 0x5f3759df is used to count the x The code implementation is from Quake III Arena source code : float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number *... Continue →