Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement