initial commit

main
William Perron 2 years ago
commit d9064f77df
No known key found for this signature in database
GPG Key ID: D1815C43C9BA3DE1

1
.gitignore vendored

@ -0,0 +1 @@
target/

7
Cargo.lock generated

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "balance"
version = "0.1.0"

@ -0,0 +1,4 @@
[workspace]
members = [
"balance"
]

@ -0,0 +1 @@
/target

@ -0,0 +1,8 @@
[package]
name = "balance"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

@ -0,0 +1,48 @@
/// Given a string of parenthesis, return the number of parenthesis you need to add to the string in order for it to be balanced.
///
/// Examples:
///
/// ```bash
/// > numBalanced(`()`)
/// > 0
///
/// > numBalanced(`(()`)
/// > 1
///
/// > numBalanced(`))()))))()`)
/// > 6
///
/// > numBalanced(`)))))`)
/// > 5
/// ```
fn main() {
println!("{}", balance("))()))))()".to_string()));
}
fn balance(s: String) -> isize {
let mut to_balance: isize = 0;
for c in s.chars() {
match c {
'(' => to_balance += 1,
')' => to_balance -= 1,
_ => unreachable!("unexpected character"),
}
}
to_balance.abs()
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_balance() {
assert_eq!(0, balance("()".to_string()));
assert_eq!(1, balance("(()".to_string()));
assert_eq!(6, balance("))()))))()".to_string()));
assert_eq!(5, balance(")))))".to_string()));
}
}
Loading…
Cancel
Save