Finish matching brackets
This commit is contained in:
parent
e836626b87
commit
86a3969e54
2 changed files with 28 additions and 22 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue