最长公共前缀
思路:
代码如下:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) return "";//特判strs为空
int row = strs.size(); //行
int col = strs[0].size();//列
for(int i = 0;i < col;i++){ //先从列开始循环
int fisrtChar = strs[0][i]; //第一个字符串
for(int j = 1;j < row;j++){ //第2层循环从1开始,第一行的字符串已经取出来了
if(strs[j].length() == i || strs[j][i] != fisrtChar)
return strs[0].substr(0,i); //若当前行的字符串走完或者当前j行i列和firstChar
//不同则返回str[0]从0到i的子串
}
}
//循环结束还没返回则公共前缀就是str[0]
return strs[0];
}
};
时间复杂度:O(mn),m 是字符串数组中的字符串的平均长度,n是字符串的数量,最坏每个字符都比较一次
空间复杂度:O(1)