题目要求:
Write a function to find the longest common prefix string amongst an array of strings.
----------------------------------------------------------------------------------------------------------------
题目说明很简单,就是找出一个字符串数组的最长公共前缀
首先,如果字符串数组strs包含0个字符串,则返回空串“”;若只包含1个字符串,则返回自己;
然后,对字符串数字进行排序,自定义比较函数mycompare,将最短的字符串放在前面;
遍历字符串数组中的每一个字符串,比较当前字符串(0,i)子串是否和strs[0]的(0,i)子串相等,如果该数组所有字符串(0,i)子串都相等,则保存该子串并返回,如果不等,则将i递减,循环;
代码如下:
bool mycompare(string a, string b)
{
if(a < b)
return true;
return false;
}
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size() == 0)
return "";
if(strs.size() == 1)
return strs[0];
//对数组进行排序
sort(strs.begin(), strs.end(), mycompare);
int flag = 0;
string result = "";
for(int i = strs[0].length(); i > 0; i--)
{
string s = strs[0].substr(0, i);
for(int j = 1; j < strs.size(); j++)
{
int len = s.length();
string temp = strs[j].substr(0, len);
if(temp == s)
{
flag = 1;
continue;
}
else
{
flag = 0;
break;
}
}
if(flag == 1)
{
result = s;
return result;
}
}
return result;
}
};