Write a function to find the longest common prefix string amongst an array of strings.
以上为题目要求。
首先说说这个题目我的解题思路,首先找出string数组中长度最短的任意一个string,以此作为基准来寻找最长的相同前缀。下面贴出代码:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string str1 = "";
int length = 99999;
int min_index;
for(int i = 0;i<(int)strs.size();i++){
if((int)strs[i].size() < length){
min_index = i;
length = (int)strs[i].size();
}
}
int i = length;
int flag;
while(i>0 && i!= 99999){
str1 = strs[min_index].substr(0,i);
flag = 0;
for(auto s:strs){
if(s.find(str1) != 0){
flag = 1;
break;
}
}
if(flag == 0)
break;
else
i--;
}
if(flag == 1)
return "";
else
return str1;
}
};
注意的是,对特殊情况的判断,如输入为空或者没有相同前缀的情况。