LeetCode 14. Longest Common Prefix

LeetCode 14. Longest Common Prefix

題目要求:找出一組字符串中的最長公共前綴。
題目給出的框架如下:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {

    }
};

解題思路:
採用的是很直接的方法,如果爲輸入字符串個數爲0,則直接返回空字符串,如果只有一個字符串,則直接返回該字符串,即:strs[0]。接下來就是將strs[0]的第i個字符strs[0][i]與其它字符串的第i個字符strs[j][i]進行比較了,如果全部相等,則最長公共前綴pre加上該字符,如果出現不相同,則直接返回之前的結果pre
代碼實現如下:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (strs.size() == 0)
            return "";
        if (strs.size() == 1)
            return strs[0];
        string pre = "";
        for (int i = 0; i < strs[0].length(); ++i) {
            for (int j = 1; j < strs.size(); ++j) {
                if (strs[0][i] != strs[j][i])
                    return pre;
            }
            pre += strs[0][i];
        }
        return pre;
    }
};

最後發現,LeetCode耗時最短的大神也是採用這種算法(3ms),沒有看出差別,但是速度確是我的三倍(9ms)。
LeetCode大神代碼實現如下:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int size = strs.size();
        if (size == 0)
            return "";
        int len = strs[0].size();
        if (size == 1)
            return strs[0];
        string rst = "";
        int j = 0;
        for (; j < len; j++){
            int i = 1;
            for (; i < size; i++){
                if (strs[i][j] != strs[0][j])
                    return rst;
            }
            rst += strs[0][j];
        } 
        return rst; 
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章