思路: 将字符串按字典排序。然后因为第一个单词和最后的一个单词的差别是最大的。首先比较这两个单词的首部,如果他们首部不同直接返回空!表示这些单词没有公共前缀。
如果首部相同的话就继续比较下一位即可.........
class Solution {
public:
string longestCommonPrefix(vector<string> &strs) {
string res = "";
int n = strs.size();
if(n <= 0){
return res;
}
//按字典排序
sort(strs.begin(), strs.end());
//最后一个单词和第一个单词的首字母不同
//那么肯定不会有相同前缀了。
if(strs[0][0] != strs[n - 1][0])
return res;
//取最小长度取比较
int size = min(strs[0].length() , strs[n - 1].length() );
//从头部比较每个字符
for(int i = 0; i < size; i++){
if(strs[0][i] == strs[n - 1][i])
res += strs[0][i];
else
break;//不同就是找完前缀了
}
return res;
}
};