Finish matching brackets

This commit is contained in:
Blizzard Finnegan 2023-08-22 14:14:30 -04:00
parent e836626b87
commit 86a3969e54
Signed by: blizzardfinnegan
GPG key ID: 61C1E13067E0018E
2 changed files with 28 additions and 22 deletions

View file

@ -1,6 +1,30 @@
use std::collections::LinkedList;
pub fn brackets_are_balanced(string: &str) -> bool {
unimplemented!(
"Check if the string \"{}\" contains balanced brackets",
string
);
let mut stack = LinkedList::new();
for char in string.chars(){
match char{
'[' | '{' | '(' => { stack.push_back(char); },
']' => {
match stack.back(){
Some('[') => {stack.pop_back();},
_ => return false
}
},
'}' => {
match stack.back(){
Some('{') => {stack.pop_back();},
_ => return false
}
},
')' => {
match stack.back(){
Some('(') => {stack.pop_back();},
_ => return false
}
},
_ => { continue; }
}
}
stack.len() == 0
}

View file

@ -6,109 +6,91 @@ fn paired_square_brackets() {
}
#[test]
#[ignore]
fn empty_string() {
assert!(brackets_are_balanced(""));
}
#[test]
#[ignore]
fn unpaired_brackets() {
assert!(!brackets_are_balanced("[["));
}
#[test]
#[ignore]
fn wrong_ordered_brackets() {
assert!(!brackets_are_balanced("}{"));
}
#[test]
#[ignore]
fn wrong_closing_bracket() {
assert!(!brackets_are_balanced("{]"));
}
#[test]
#[ignore]
fn paired_with_whitespace() {
assert!(brackets_are_balanced("{ }"));
}
#[test]
#[ignore]
fn partially_paired_brackets() {
assert!(!brackets_are_balanced("{[])"));
}
#[test]
#[ignore]
fn simple_nested_brackets() {
assert!(brackets_are_balanced("{[]}"));
}
#[test]
#[ignore]
fn several_paired_brackets() {
assert!(brackets_are_balanced("{}[]"));
}
#[test]
#[ignore]
fn paired_and_nested_brackets() {
assert!(brackets_are_balanced("([{}({}[])])"));
}
#[test]
#[ignore]
fn unopened_closing_brackets() {
assert!(!brackets_are_balanced("{[)][]}"));
}
#[test]
#[ignore]
fn unpaired_and_nested_brackets() {
assert!(!brackets_are_balanced("([{])"));
}
#[test]
#[ignore]
fn paired_and_wrong_nested_brackets() {
assert!(!brackets_are_balanced("[({]})"));
}
#[test]
#[ignore]
fn paired_and_incomplete_brackets() {
assert!(!brackets_are_balanced("{}["));
}
#[test]
#[ignore]
fn too_many_closing_brackets() {
assert!(!brackets_are_balanced("[]]"));
}
#[test]
#[ignore]
fn early_incomplete_brackets() {
assert!(!brackets_are_balanced(")()"));
}
#[test]
#[ignore]
fn early_mismatched_brackets() {
assert!(!brackets_are_balanced("{)()"));
}
#[test]
#[ignore]
fn math_expression() {
assert!(brackets_are_balanced("(((185 + 223.85) * 15) - 543)/2"));
}
#[test]
#[ignore]
fn complex_latex_expression() {
let input = "\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \
\\end{array}\\right)";