https://leetcode-cn.com/problems/longest-common-prefix/
思路:纵向遍历
string longestCommonPrefix(vector<string>& strs) {
string res = "";
int i = 0;
if (strs.size() <= 0) {
return res;
}
while(i < strs[0].size()) {
for (int j = 1;j < strs.size(); j++) {
if (strs[j][i] != strs[0][i]) {
return strs[0].substr(0, i);
}
}
i += 1;
}
return strs[0];
}
思路:字典排序,取minvalue、maxvalue
int strcmp_new(string s1, string s2) {
int value = min(s1.size(), s2.size());
for (int i = 0; i < value; i++) {
if (s1[i] > s2[i]) {
return 1;
} else if (s1[i] < s2[i]) {
return 0;
}
}
if (s1.size() > value) {
return 1;
}
return 0;
}
string longestCommonPrefix(vector<string>& strs) {
string res = "";
int i = 0;
if (strs.size() <= 0) {
return res;
}
string min_value = strs[0];
string max_value = strs[0];
for (int i = 1; i < strs.size(); i++) {
if (strcmp_new(strs[i], min_value) == 0) {
min_value = strs[i];
}
if (strcmp_new(strs[i], max_value) == 1) {
max_value = strs[i];
}
}
for (int i = 0; i < min_value.size(); i++) {
if (min_value[i] != max_value[i]) {
return min_value.substr(0, i);
}
}
return min_value;
}
思路:minmax_element获取字典最小值、最大值,效率会比上面效率提升很大。
string longestCommonPrefix(vector<string>& strs) {
string res = "";
int i = 0;
if (strs.size() <= 0) {
return res;
}
auto value = minmax_element(strs.begin(), strs.end());
for (int i = 0; i < value.first->size(); i++) {
if (value.first->at(i) == value.second->at(i)) {
continue;
} else {
return value.first->substr(0, i);
}
}
return *(value.first);
}