Leetcode -- Longest Common Prefix

来源:互联网 发布:校园暴力看待 知乎 编辑:程序博客网 时间:2024/06/05 10:42

题目:
Write a function to find the longest common prefix string amongst an array of strings.

分析:
一堆string里面,找到大家共有的从头部开始的字串

思路:
遍历,复杂度O(N)。每次记下当前最长的字串,然后跟新的一个string比较,获取当前的最长字串。

代码:

string longestCommonPrefix(vector<string>& strs) {        string str, max_str;        int len_strs = strs.size();        int len1, len2;        if(len_strs == 0)        {            return "";        }        max_str = strs[0];        for(int i = 1;i < len_strs; i++)        {            len1 = max_str.size();            len2 = strs[i].size();            str = "";            for (int j = 0; j < (len1 < len2? len1 : len2); j ++)            {                if(max_str[j] == strs[i][j])                {                    str = str + max_str[j];                }                else                {                    break;                }            }            max_str = str;        }        return max_str;    }

更简单的算法:discuss中发现的:
思路:将第一个string作为模板,一个char一个char的判断,直到某个不一致就结束。
前面的思路是:一个string一个string的判断二者之间的最长开头子串。
代码:

string longestCommonPrefix(vector<string>& strs) {        if (strs.empty()) return "";        for (int pos = 0; pos < strs[0].length(); pos++)            for (int i = 1; i < strs.size(); i++)                if (pos >= strs[i].length() || strs[i][pos] != strs[0][pos])                    return strs[0].substr(0, pos);        return strs[0];    }
0 0