问题
Write a function to find the longest common prefix string amongst an array of strings.
分析
求一个数组中,所有元算的最常公共前缀,获取数据中长度最短的元素,将这个元素的每一位,依次与数组中每个元素的每一位进行比较,当遇见不相等时,即刻终止
对数组中的元素排序,这样以来只需要比较第一个元素和最后一个元素,就可以得到数组的最大公共前缀
解答
string longestCommonPrefix(
vector<string>& strs) {
string result =
"";
if (strs.size() ==
0)
return result;
int minLenIndex =
0;
for (
int i =
1; i < strs.size(); i++){
if (strs[i].length() < strs[minLenIndex].length())
minLenIndex = i;
}
int i =
0;
for (i =
0; i < strs[minLenIndex].length(); i++){
int j =
0;
for (j =
0; j < strs.size(); j++){
if (strs[j][i] != strs[minLenIndex][i]){
break;
}
}
if (j < strs.size()){
break;
}
}
result = strs[minLenIndex].substr(
0, i);
return result;
}
string longestCommonPrefix2(
vector<string>& strs) {
string result =
"";
if (strs.size() ==
0)
return result;
sort(strs.begin(), strs.end());
int i =
0;
for (i =
0; i < strs[
0].length(); i++){
if (strs[
0][i] != strs[strs.size() -
1][i]){
break;
}
}
result = strs[
0].substr(
0, i);
return result;
}