用Rust刷leetcode第十四题
原创
©著作权归作者所有:来自51CTO博客作者wx6364ffafc5a30的原创作品,请联系作者获取转载授权,否则将追究法律责任
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;
}
},
}
}
}
}
}