Guest User

Untitled

a guest
Aug 16th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. pub struct Brackets<'a> {
  2. stack: Vec<&'a str>,
  3. }
  4.  
  5. impl<'a> From<&'a str> for Brackets<'a> {
  6. fn from(input: &'a str) -> Self {
  7. let mut stack = Vec::new();
  8. for c in input.split_terminator("").skip(1) { // trick to get each char as a slice
  9. stack.push(c);
  10. }
  11.  
  12. Brackets { stack }
  13. }
  14. }
  15.  
  16. impl<'a> Brackets<'a> {
  17. pub fn are_balanced(&self) -> bool {
  18. let mut stack = Vec::new();
  19. for &slice in &self.stack {
  20. match slice {
  21. "(" | "[" | "{" => stack.push(slice),
  22. ")" | "]" | "}" => {
  23. let popped = stack.pop();
  24. match popped {
  25. Some(")") => {
  26. if slice != "(" {
  27. return false;
  28. };
  29. }
  30. Some("]") => {
  31. if slice != "[" {
  32. return false;
  33. };
  34. }
  35. Some("}") => {
  36. if slice != "{" {
  37. return false;
  38. };
  39. }
  40. _ => return false,
  41. }
  42. }
  43. _ => continue,
  44. }
  45. }
  46.  
  47. true
  48. }
  49. }
  50.  
  51. fn main() {}
Add Comment
Please, Sign In to add comment