编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
思路: 先处理一些比较特殊的情况 (字符串只有一个或者没有等情况), 然后对字符串进行排序, 此时strs[0] 就是最短的字符串。然后循环最短字符串的每个字符 对于遍历此外的字符串, 寻找最长的公共字符串
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int strs_size = strs.size();
if(strs_size == 1) return strs[0]; // 处理特殊情况
if(strs_size == 0 || strs[0].size() == 0) return "";
sort(strs.begin(), strs.end()); // 这样第一个就是最短字符串的了
for(int index = 0;;index++){
char ch =strs[0][index]; // 比较字母
for(int i = 1;i<strs_size;i++){
if(strs[i][index] != ch) return strs[0].substr(0,index); // 每个都比较下
if(strs[i].size() == index) return strs[i]; // 在前面的条件后 说明 都是等于的。若长度相同的话 直接输出 strs[i] 即可
}
}
}
};
欢迎朋友们来观看我的博客, 若有更好的思路, 欢迎在下面的留言区留下你的精彩发言。谢谢大家的观看~~