Codility : Supports de Déterminer si une chaîne de parenthèses est correctement imbriquées

La description du problème de codility :

Une chaîne de caractères S constitué de N caractères est considéré comme pour être correctement imbriquées si l'une des conditions suivantes est remplie:

S est vide;
S est de la forme "(U)" ou "[U]" ou "{U}", où U est un correctement imbriquées chaîne;
S est de la forme "VW", où V et W sont correctement imbriquées les chaînes.
Par exemple, la chaîne "{[()()]}" est correctement imbriqués mais "([)()]" ne l'est pas.

Écrire une fonction:

Solution de classe { public int solution(String S); }

que, étant donné une chaîne de caractères S constitué de N caractères, retourne 1 si S est correctement imbriquées et 0 sinon.

Par exemple, étant donné S = "{[()()]}", la fonction doit retourner 1 et S donné = "([)()]", la fonction doit retourner 0, comme expliqué ci-dessus.

Supposons que:

N est un entier compris dans la plage [0..de 200 000];
string S se compose uniquement des caractères suivants: "(", "{", "[", "]", "}" et/ou ")".
Complexité:

attendu au pire-cas du temps de la complexité est O(N);
attendu au pire-cas de l'espace de la complexité est O(N) (sans compter l'espace de stockage requis pour les arguments d'entrée).

- Je obtenir 87% je ne peux pas semblent comprendre le problème.

Codility : Supports de Déterminer si une chaîne de parenthèses est correctement imbriquées

Voici mon code :

   //you can also use imports, for example:
//import java.util.*;
import java.util.Stack;
//you can use System.out.println for debugging purposes, e.g.
//System.out.println("this is a debug message");
class Solution {
public int solution(String s) {
if (s.length() % 2 != 0) {
return 0;
}
Character openingBrace = new Character('{');
Character openingBracket = new Character('[');
Character openingParen = new Character('(');
Stack<Character> openingStack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == openingBrace || c == openingBracket || c == openingParen) {
openingStack.push(c);
} else  {
if (i == s.length()-1 && openingStack.size() != 1) {
return 0;
}
if (openingStack.isEmpty()) {
return 0;
}
Character openingCharacter = openingStack.pop();
switch (c) {
case '}':
if (!openingCharacter.equals(openingBrace)) {
return 0;
}
break;
case ']':
if (!openingCharacter.equals(openingBracket)) {
return 0;
}
break;
case ')':
if (!openingCharacter.equals(openingParen)) {
return 0;
}
break;
default:
break;
}
} 
}
return 1;
}
}
Avez-vous un exemple de la saisie de votre code, ne parvient pas à valider correctement?
Je suis horrible entretien des flashbacks de cette question.
Je n'ai pas l'entrée, codiliy ne prévoit pas que. Je ne sais pas ce qu'ils entendent par "negative_match invalide structures"
Vous pouvez faire le test ici codility.com/c/intro/demo7MQR6Q-232
"negative_match" est ))((

OriginalL'auteur klind | 2015-03-09