首页 > 其他 > 详细

最长的共同前缀

时间:2015-08-25 21:00:39      阅读:142      评论:0      收藏:0      [点我收藏+]

我用的方法是,同时保存每个 string 的begin 迭代器,让他们一起移动,然后统一比较,若是不同,或其中有的已经到了 end() ,那么就返回。否则所有的迭代器共同前进一步。

string longestCommonPrefix(vector<string>& strs) {
    if (strs.empty()){
        return string();
    }
    
    vector<string::iterator> its;
    for_each(strs.begin(), strs.end(), [&](string& s){its.push_back(s.begin());});
    const auto len = its.size();
    
    for (;;){
        const auto key = *its[0];
        for (size_t i = 0; i != len; ++i){
            if (its[i] == strs[i].end() || *its[i] != key){
                return string(strs[i].begin(), its[i]);
            }
        }
        for_each(its.begin(), its.end(), [](string::iterator& it){++it;});
    }
}

 

最长的共同前缀

原文:http://www.cnblogs.com/wuOverflow/p/4758268.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!