题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
示例:
输入:strs = ["flower","flow","flight"] 输出:"fl"
基础知识:
str.size() 数组字符数(eg:str=["aaaa","b"],str.size()=2)
str[0] 字符串的第一个字符
substr(0,i) 复制从0开始到i的子字符串
横向扫描法:先第一个字符与第二个字符比较,比较完毕,取最长前缀prefix,再将prefix与第三个字符进行比较,取最长前缀。
具体代码:
#include<string>
using namespace std;
class Solution{
public:
string longestCommonPrefix(vector<string>& strs){
int n=strs.size();
string prefix=strs[0];
for(i=1;i<n;i++){
prefix=longcommon(prefix,strs[i]);
if(!prefix.size())break;
}
return prefix;
}
string longcommon(string &prefix,string &strs){
int len=min(prefix.size(),strs.size());
int index=0;
while(index<len&&prefix[index]==strs[index]){
index++;
}
return prefix.substr(0,index);
}
};