一、题目
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
二、解题思路
这题的整体思路比较简单,首先找出最短的字符串长度,然后从每个字符串的第一个字符开始,逐个比较,若每个字符串对应位置的字符都相同,则将该字符加入公共前缀中,当第一个不同的字符出现时,表示已经找最长出公共前缀,不用再往后遍历。
三、代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string ans = "";
int len = strs.size();
if(len == 0) return ans;
char tmp;
int minlen = INT_MAX; //记录最短的字符串长度
for(int i=0; i<len; i++){
if(strs[i].size() < minlen) minlen = strs[i].size();
}
for(int i=0; i<minlen; i++){
tmp = strs[0][i];
for(int j=0; j<len; j++){
if(strs[j][i] != tmp){
return ans;
}
}
ans += tmp;
}
return ans;
}
};
四、执行结果
程序只用了常数个额外空间,但从运行结果看,空间性能较低,没太搞清楚空间消耗在哪里,如果有知道的大佬路过,还望不吝赐教。