Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub struct Brackets<'a> {
- stack: Vec<&'a str>,
- }
- impl<'a> From<&'a str> for Brackets<'a> {
- fn from(input: &'a str) -> Self {
- let mut stack = Vec::new();
- for c in input.split_terminator("").skip(1) { // trick to get each char as a slice
- stack.push(c);
- }
- Brackets { stack }
- }
- }
- impl<'a> Brackets<'a> {
- pub fn are_balanced(&self) -> bool {
- let mut stack = Vec::new();
- for &slice in &self.stack {
- match slice {
- "(" | "[" | "{" => stack.push(slice),
- ")" | "]" | "}" => {
- let popped = stack.pop();
- match popped {
- Some(")") => {
- if slice != "(" {
- return false;
- };
- }
- Some("]") => {
- if slice != "[" {
- return false;
- };
- }
- Some("}") => {
- if slice != "{" {
- return false;
- };
- }
- _ => return false,
- }
- }
- _ => continue,
- }
- }
- true
- }
- }
- fn main() {}
Add Comment
Please, Sign In to add comment