用Rust刷leetcode第十四题

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

                    },
                }
            }
        }  
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!