From 7ea585080006ae7b0a9988e35a89386d7ef3a2c1 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Tue, 25 Oct 2022 19:36:44 -0700 Subject: [PATCH] longest prefix in the bag --- longest_common_prefix/Cargo.toml | 8 ++++++ longest_common_prefix/src/main.rs | 47 +++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 longest_common_prefix/Cargo.toml create mode 100644 longest_common_prefix/src/main.rs diff --git a/longest_common_prefix/Cargo.toml b/longest_common_prefix/Cargo.toml new file mode 100644 index 0000000..6bb57d0 --- /dev/null +++ b/longest_common_prefix/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "longest_common_prefix" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/longest_common_prefix/src/main.rs b/longest_common_prefix/src/main.rs new file mode 100644 index 0000000..dd7c6bc --- /dev/null +++ b/longest_common_prefix/src/main.rs @@ -0,0 +1,47 @@ +pub fn longest_common_prefix(strs: Vec) -> String { + let mut s = String::from(""); + + let mut i = 0; + let mut same = true; + while same { + if let Some(first) = &strs[0].chars().nth(i) { + for st in &strs { + if let Some(c) = st.chars().nth(i) { + if c != *first { + same = false; + break; + } + } else { + same = false; + break; + } + } + i += 1; + if same { + s.push(*first); + } + } else { + break; + } + } + + s +} + +fn main() { + let res = longest_common_prefix(vec![ + "flower".to_string(), + "flow".to_string(), + "flight".to_string(), + ]); + dbg!(res); + + let res = longest_common_prefix(vec![ + "dog".to_string(), + "racecar".to_string(), + "car".to_string(), + ]); + dbg!(res); + + dbg!(longest_common_prefix(vec!["".to_string()])); +}