代碼題(54)— 最長公共前綴


1、14. 最長公共前綴

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 ""

示例 1:

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

示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

  這道題讓我們求一系列字符串的共同前綴,沒有什么特別的技巧,無腦查找即可,我們定義兩個變量i和j,其中i是遍歷搜索字符串中的字符,j是遍歷字符串集中的每個字符串。這里將單詞上下排好,則相當於一個各行長度有可能不相等的二維數組,我們遍歷順序和一般的橫向逐行遍歷不同,而是采用縱向逐列遍歷,在遍歷的過程中,如果某一行沒有了,說明其為最短的單詞,因為共同前綴的長度不能長於最短單詞,所以此時返回已經找出的共同前綴。我們每次取出第一個字符串的某一個位置的單詞,然后遍歷其他所有字符串的對應位置看是否相等,如果有不滿足的直接返回res,如果都相同,則將當前字符存入結果,繼續檢查下一個位置的字符。

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string res;
        if(strs.empty())
            return res;
        for(int i=0;i<strs[0].size();++i)
        {
            char c = strs[0][i];
            for(int j=1;j<strs.size();++j)
            {
                if(i>=strs[j].size() || strs[j][i] != c)
                    return res;
            }
            res.push_back(c);
        }
        return res;
    }
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM