pub fn longest_common_prefix(strings: Vec) -> String { // Sort the strings ascending by length. let mut strings = strings.clone(); strings.sort_by(|a, b| a.len().cmp(&b.len())); // Then grab the shortest string. let shortest_string = match strings.first() { Some(string) => string, None => return String::new(), }; // The shortest string must be the maximum possible prefix, so start with it. let mut prefix = shortest_string.clone(); // Then loop over the shortest string's length and check if every string in // the list starts with the prefix, and if they don't, pop the last character // from the prefix. for _ in 0..shortest_string.len() { // If we find a prefix that all strings start with, we've found the longest // common one. if strings.iter().all(|string| string.starts_with(&prefix)) { break; } else { prefix.pop(); } } // If by the end there is no longest common prefix, the prefix will be an // empty string. prefix }