我的做法时间复杂度比较高,我用的是遍历每一个字符串,然后每次存下这个字符串与公共字符串的公共部分,不断的更新。官方题解给出了几种更好的方案。
注意:存在输入为空的情况,所以我做了长度判断,还有就是存在当前字符串被之前公共字符串包含的情况,所以我做了bool标记。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string ans = "";
string flag = "";
if( strs.size() > 0 ) flag = strs[0];
for( int i = 1 ; i < strs.size() ; i++ ){
bool hh = false;
for( int j = 0 ; j < strs[i].length() ; j++ ){
if( strs[i][j] == flag[j] ) ans += flag[j];
else{
flag = ans;
ans = "";
hh = true;
break;
}
}
if( !hh ){
flag = ans;
ans = "";
}
}
return flag;
}
};