Leetcode -- Longest Common Prefix

題目:
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];
    }
發佈了40 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章