SHARE
TWEET

Untitled

a guest Oct 15th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import 'dart:collection';
  2.  
  3. bool blocCodeValide(String s) {
  4.   // Null et empty check. Un bloc de taille < 2 est invalide
  5.   if (["", null].contains(s) || s.length < 2) {
  6.     return false;
  7.   }
  8.   ;
  9.   // Init
  10.   Queue stack = Queue();
  11.   Map<String, String> pairesBlocs = {"{": "}", "(": ")", "[": "]"};
  12.   bool bStackTouchee = false;
  13.  
  14.   // Logique
  15.   for (int i = 0; i < s.length; i++) {
  16.     String char = s[i];
  17.     // Si le caractère est valide, je l'ajoute à la stack et passe à l'itération suivante
  18.     if (pairesBlocs[char] != null) {
  19.       stack.addLast(char);
  20.       bStackTouchee = true;
  21.       continue;
  22.     }
  23.     // Cas de caractère n'étant pas une ouverture de bloc de code
  24.     // Test si le char en cours n'est pas la fermeture du dernier char de la stack
  25.     if (stack.isNotEmpty && pairesBlocs[stack.removeLast()] != char) {
  26.       return false;
  27.     }
  28.   }
  29.   // S’il y a eu des opérations d’ajouts et de suppression sur la stack
  30.   // et qu’elle se retrouve vide à la fin,il y a correspondance parfaite
  31.   // entre les ouvertures et fermetures de blocs
  32.   return bStackTouchee && stack.isEmpty;
  33. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top