题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解决思路:
首先考虑vector为空,直接返回""。
然后拿第一个字符串的每个字符,依次与后面字符串的相应字符进行比较,相等则继续比较下一个,不等的话使用string.substr截取第一个字符串的当前位置字符串。
最后就是当vector不为空,而且当第一个字符串的所有字符都顺利比较完了,完全相等的情况下,直接返回第一个字符串strs[0]即可。
C++代码:
class Solution {
public:string longestCommonPrefix(vector<string>& strs) {//异常情况,strs为空if(strs.empty())return "";//第一个string每个字母单独与后面的string相应字母比较for(int letterOfFirst=0;letterOfFirst<strs[0].size();++letterOfFirst){for(int otherStr=1;otherStr<strs.size();++otherStr){//若某个字符开始不相等//使用substr进行截取if(strs[0][letterOfFirst]!=strs[otherStr][letterOfFirst])return strs[0].substr(0,letterOfFirst);}}//一直都没有找到不同的字母return strs[0];}
};