leetcode_rust/
longest_common_prefix.rs1#![allow(dead_code)]
2
3pub fn longest_common_prefix(strs: Vec<String>) -> String {
5 let mut common = String::new();
6 if strs.len() == 0 {
7 return common;
8 } else if strs.len() == 1 {
9 return strs[0].clone();
10 }
11
12 let mut k: usize = 0;
13 loop {
14 let cur_ch: char;
15 match strs[0].chars().nth(k) {
16 None => {
17 return common;
18 }
19 Some(ch) => {
20 cur_ch = ch;
21 }
22 };
23
24 for i in 1..strs.len() {
25 match strs[i].chars().nth(k) {
26 Some(ch) if cur_ch == ch => {}
27 _ => return common,
28 }
29 }
30
31 common.push(cur_ch);
32 k += 1;
33 }
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39
40 #[test]
41 fn test1() {
42 let strs = vec![
43 String::from("flower"),
44 String::from("flow"),
45 String::from("flight"),
46 ];
47
48 assert_eq!(longest_common_prefix(strs), String::from("fl"));
49 assert_eq!(longest_common_prefix(vec![]), String::from(""));
50 assert_eq!(
51 longest_common_prefix(vec![String::from("flower")]),
52 String::from("flower")
53 );
54 }
55}