(LeetCode篇)4. 最長公共前綴

題目描述:

編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""。

示例 1:

輸入: ["flower","flow","flight"]

輸出: "fl"

說明:

所有輸入只包含小寫字母 a-z 。

 

分析:

最長的公共前綴與最短的字符串有關

(1)、找出字符串中最短的子字符串;

(2)、再將字符串的單個子字符串與最短字符分別比較,找出公共的前綴;

 

完整代碼:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        //聲明一變量字符串 str;
        string str = "";
        //檢查輸入的合法性
        if(strs.empty())
            return str;
        
        //定義一個最小字符串,並初始化
        string min = strs[0];
        
        //計算整個字符串的長度
        int length = strs.size();
        
        //找出字符串中最短的字符
        for(int i = 1; i < length; ++i)
        {
            //如果 strs[0] 的長度大於當前的字符串長度
            if(min.size() > strs[i].size())
            {
                //將最小字符串設置爲當前的字符串
                min = strs[i];
            }
        }
        
         //求解公共最長的前綴
        //遍歷整個子字符串
        for(int i = 0; i < min.size(); ++i)
        {
            //遍歷整個字符串
            for(int j = 0; j < length; ++j)
            {
                //因爲是前綴,所以只要出現了字符不一樣,立即返回答案
                if(min[i] != strs[j][i])
                    return str;
            }
            str = str + min[i];
        }
        //返回最終的結果
        return str;      
    }
};

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章