纵向扫描
依次遍历每个字符串,更新最长公共前缀。
纵向扫描时,从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同。
如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(!strs.size()){
return "";
}
// 保存第一个string的长度
int length = strs[0].size();
// 几个字符串要匹配
int count = strs.size();
for(int i = 0;i<length;i++){
// 记录当前比较的字符(c)
char c = strs[0][i];
//遍历每一个要比较的字符串,看看这个字符c是否匹配
for(int j = 1;j<count;j++){
// 1.如果长度马上超过其中一个字符串就停止
// 2.如果当前某一字符串里面的c不匹配也停止
if(i == strs[j].size() || strs[j][i] != c){
return strs[0].substr(0,i);
}
}
}
return strs[0];
}
};