问题描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
#include "pch.h"
#include <iostream>
#include<vector>
#include<sstream>
using namespace std;
class Solution
{
public:
string longestCommonPrefix(vector<string>& strs)
{
int num = strs.size();
if (num == 1)
return strs.at(0);
if (num == 0)
return "";
int j = 0;
while (1)
{
for (int i = 0; i < num; i++)
{
if (j > strs.at(i).size())
return strs.at(i).substr(0, j);
char c = strs.at(0).at(j);
if (c != strs.at(i).at(j))
return strs.at(i).substr(0, j);
}
j++;
}
}
};
int main()
{
vector<string> p;
string str;
while (cin >> str)
{
p.push_back(str);
if (getchar() == '\n')//判断输入是否结束
break;
}
Solution list;
cout<<list.longestCommonPrefix(p).c_str()<<endl;
}
一开始没有#include<sstream>,结果while(cin>>str)会显示“没有与操作数匹配的>>操作符”,include之后则有了。
关于字符串读取参考这篇文章
https://blog.csdn.net/zhangyalin1992/article/details/25489429