用Rust刷leetcode第十四題

linghuyichong發表於2020-09-03

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 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章