[LeetCode] 14_最长公共子前缀
题目要求
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
题目分析
- 如果字符串数组为空,直接返回空字符串
- 使用第一个字符串中的每一位和之后每个字符串中每一位进行比对,如果不一样,则返回之前比对相同的部分,如果一样,则继续比对。
- 当全部一样时,返回第一个字符串即可
注意点
- 如果某个字符串已经到头并且第一个字符串还没有到头,那么最后一位是’\0’,会和第一个字符串中的相应位比对错误,这种情况不需要单独讨论。
- 要熟悉substr的使用,str.substr(x,y)是指从x开始,长度为y的子串。
代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())return "";
for(int i=0;i<strs[0].length();++i){
for(int j=1;j<strs.size();++j){
if(strs[j][i]!=strs[0][i]){
return strs[0].substr(0,i);
}
}
}
return strs[0];
}
};