Problem

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

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​​.

Solution

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;
}

},
}
}
}
}
}