在给出完整代码之前,我们先来看这么一个字符串
vector<string> str = { "great","grape","green" };
接下来用伪代码,理解一下表示过程
str.size()是3,下面看到时代入即可。
第一次比较:
str[0][0]==str[1][0]=str[2][0]
上式用for循环表示
for(int i=1;i<str.size();i++)
if(str[i][0]==str[0][0])
第二次比较:
str[0][1]==str[1][1]=str[2][1]
上式用for循环表示
for(int i=1;i<str.size();i++)
if(str[i][1]==str[0][1])
第三次比较:
str[0][2]==str[1][2]=str[2][2]
上式用for循环表示
for(int i=1;i<str.size();i++)
if(str[i][2]==str[0][2])
这次比较之后就没必要比了,gr后面都不同
你还需要知道一个这么滴函数
string str = "holyshit";
string sub = str.substr(4, 7);
cout << sub;
其输出结果就是:shit
最后,这是可以运行的代码
#include<iostream>
#include<vector>
#include<string>
using namespace std;
string getCommon(vector<string> str) {
if (str.size() == 0)
return "";
if (str.size() == 1)
return str[0];
for (int j = 0; j < str[0].length(); j++) {
char temp = str[0][j];
for (int i = 1; i < str.size(); i++) {
if (temp != str[i][j])
return str[0].substr(0, j);
}
}
return str[0];
}
int main() {
vector<string> str = { "great","grape","green" };
cout<<getCommon(str);
vector<string> str2 = { "abc" };
cout << getCommon(str2);
return 0;
}