编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
主要思路就是 那第一个strs[0] 作为一个参考物, 遍历后面字符串的每个字符进行比较。直到找到不相等的,就返回相应长度的字符串
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()<=0) return "";
if(strs[0].size() == 0) return "";
if(strs.size()==1)return strs[0]; // 处理异常的情况
for(int index=0;;index++){ // 以第一个为参考物
char ch = strs[0][index];
for(int i = 0;i<strs.size();i++){ // 分别去遍历 strs 剩下的 string
if(strs[i][index] != ch) return strs[0].substr(0,index);
// 当出现不相等的时候, 说明已经出现了最长前缀了, 返回相应长度的字符串即可
if(strs[i].size() == index) return strs[i];
// 在上面那行的if语句后 说明相等 加上长度一样 那这时候可以直接返回了。
}
}
return 0;
}
};
朋友们,如果有更好的思路 欢迎在下方的讨论区留言哦。