題目描述:
編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""。
示例 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;
}
};