Last active
September 27, 2019 20:02
-
-
Save JustDravee/fae840b6b794c99bb61d9bcbd9bb6f3a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:collection'; | |
bool blocCodeValide(String s) { | |
// Null et empty check. Un bloc de taille < 2 est invalide | |
if (["", null].contains(s) || s.length < 2) { | |
return false; | |
} | |
; | |
// Init | |
Queue stack = Queue(); | |
Map<String, String> pairesBlocs = {"{": "}", "(": ")", "[": "]"}; | |
bool bStackTouchee = false; | |
// Logique | |
for (int i = 0; i < s.length; i++) { | |
String char = s[i]; | |
// Si le caractère est valide, je l'ajoute à la stack et passe à l'itération suivante | |
if (pairesBlocs[char] != null) { | |
stack.addLast(char); | |
bStackTouchee = true; | |
continue; | |
} | |
// Cas de caractère n'étant pas une ouverture de bloc de code | |
// Test si le char en cours n'est pas la fermeture du dernier char de la stack | |
if (stack.isNotEmpty && pairesBlocs[stack.removeLast()] != char) { | |
return false; | |
} | |
} | |
// S’il y a eu des opérations d’ajouts et de suppression sur la stack | |
// et qu’elle se retrouve vide à la fin,il y a correspondance parfaite | |
// entre les ouvertures et fermetures de blocs | |
return bStackTouchee && stack.isEmpty; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment