最长公共前缀
题目描述:获取输入的字符串组的最长公共前缀。
自己的解法
1.判断是否为空;
2.判断是否只有一个字符串;
3.找出最小字符串个数;
4.从第一字符开始,每个字符串比较,比较完一轮之后为输出叠加一个字符,如果不匹配,就跳出,直接返回。
两两比较
对字符串组两两比较,最后的公共前缀就是所有的公共前缀。
分治
同样的两两比较,不过使用递归调用。
代码1
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int num = strs.size();
if (num == 0) return "";
if (num == 1) return strs[0];
string comPre = ""; int len;
int minLen = strs[0].length();
bool compareFlag = 1; //比较标志位,为0时表示不匹配
for (int i = 1; i < num; i++) {
len = strs[i].length();
if (minLen > len) minLen = len;
}
for (int i = 0; i < minLen; i++)
{
for (int j = 1; j < num; j++)
{
if (strs[0][i] != strs[j][i]) {
compareFlag = !compareFlag; break;
}
}
if (compareFlag == 0) return comPre;
comPre += strs[0][i];
}
return comPre;
}
};