采用方法:纵向扫描
思路:每次查找不再是依次对比两个字符串,然后根据对比调整最长公共前缀,纵向扫描则每次遍历每一个字符串的第i个字符,若相等,则说明该字符属于最长公共最长前缀,若中途发现某个字符串中第i个字符不同,则说明最长公共前缀结束,为前i个字符,输出。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//若没有字符串,则直接返回""
if (strs.size()==0) return "";
int length = strs[0].size(); //存储第一个字符串的长度
int count = strs.size(); //存储字符串个数
for (int i = 0; i < length; ++i) {
char temp = strs[0][i]; //存储每次要对比的字符
for (int j = 0; j < count; ++j) {
//如果某个字符串遍历完了,该字符串第i个字符不是temp,则输出
if (i == strs[j].size() || temp != strs[j][i])
//substr(m, n)函数用于返回字符串从m开始后的第n个字符组成的字符串
return strs[0].substr(0, i);
}
}
return strs[0];
}
};