题目
**编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。**
知识点
substr(0, i) 表示从字符串的起始位置(索引 0)开始截取,直到索引 i 的位置,但不包括索引 i 本身。也就是说,它会截取从第 0 个字符到第 i-1 个字符的子字符串。这是大多数编程语言中 substr 或类似字符串截取函数的通用行为。
代码 —— 纵向思维
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(!strs.size()) return "";
int lenght = strs[0].size();
int n = strs.size();
for(int i = 0;i < lenght;i++)
{
char c = strs[0][i];
for(int j = 1;j < n;j++)
{
if(strs[j][i] != c)
{
return strs[0].substr(0,i);
}
}
}
return strs[0];
}
};
代码 —— 横向思维
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if (!strs.size()) {
return "";
}
string prefix = strs[0];
int count = strs.size();
for (int i = 1; i < count; ++i) {
prefix = longestCommonPrefix(prefix, strs[i]);
if (!prefix.size()) {
break;
}
}
return prefix;
}
string longestCommonPrefix(const string& str1, const string& str2) {
int length = min(str1.size(), str2.size());
int index = 0;
while (index < length && str1[index] == str2[index]) {
++index;
}
return str1.substr(0, index);
}
};