diff options
| author | Federico Igne <git@federicoigne.com> | 2020-07-10 11:39:29 +0200 |
|---|---|---|
| committer | Federico Igne <git@federicoigne.com> | 2021-11-03 18:55:08 +0000 |
| commit | 64cc39e6507a611366e1c3ddcf098b77c94a38db (patch) | |
| tree | 9f7ad6eab4801d279a68c2da768135c6bc0d5b06 /matching-brackets/src/lib.rs | |
| parent | b6a96e1bfe1a2e411a14fff13948236054a8cca5 (diff) | |
| download | exercism-64cc39e6507a611366e1c3ddcf098b77c94a38db.tar.gz exercism-64cc39e6507a611366e1c3ddcf098b77c94a38db.zip | |
[rust] Matching Brackets
Diffstat (limited to 'matching-brackets/src/lib.rs')
| -rw-r--r-- | matching-brackets/src/lib.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/matching-brackets/src/lib.rs b/matching-brackets/src/lib.rs new file mode 100644 index 0000000..03e39ca --- /dev/null +++ b/matching-brackets/src/lib.rs | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | pub fn brackets_are_balanced(string: &str) -> bool { | ||
| 2 | let mut stack = vec![]; | ||
| 3 | for c in string.chars() { | ||
| 4 | match c { | ||
| 5 | '(' => stack.push(((c as u8) + 1) as char), | ||
| 6 | '[' | '{' => stack.push(((c as u8) + 2) as char), | ||
| 7 | ')' | ']' | '}' if stack.pop() != Some(c) => return false, | ||
| 8 | _ => () | ||
| 9 | } | ||
| 10 | } | ||
| 11 | stack.is_empty() | ||
| 12 | } | ||
