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; } };