题意:找所有字符串的共同的最长前缀字符串
解题思路:我们可以先使用第一个字符串,用其他字符串与此字符串对应字符比较,当遇到不相等或者当前的字符串比此字符串长度短,则返回之前的共同的前缀,否则最后输出第一个字符串。
#include <iostream>
#include <vector>
using namespace std;
string longestCommonPrefix(vector<string>& strs){
if (strs.empty()) return "";
int n = strs.size();
for (int i = 0;i < strs[0].size();i ++){
for (int j = 1;j < n;j ++){
if (strs[0][i] != strs[j][i] || strs[j].size() <= i)
//注意,不要使用临时string对象,使用临时对象会在函数结束后被回收
return strs[0].substr(0,i);
}
}
//同上,注意
return strs[0];
}
int main(){
vector<string> strs = {"flower", "flow", "flight"};
cout << longestCommonPrefix(strs) << endl;
}