Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string ""
.
Example 1:
Input: [“flower”,”flow”,”flight”]
Output: “fl”
Example 2:
Input: [“dog”,”racecar”,”car”]
Output: “”
Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z
.
impl Solution {
pub fn longest_common_prefix(strs: Vec<String>) -> String {
if strs.len() == 0 {
return "".to_string();
}
let mut ret = String::new();
let mut temps: Vec<std::str::Chars> = strs.iter().map(|s| {s.chars()}).collect();
let mut c: Option<char> = None;
loop {
c.take().map(|ch| ret.push(ch));
for iter in temps.iter_mut() {
let mut ch = iter.next();
if ch.is_none() {
return ret;
}
match c {
None => c = ch.take(),
Some(curr) => {
if curr != ch.unwrap() {
return ret;
}
},
}
}
}
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結