leetcode-14

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);
}

猜你喜欢

转载自blog.csdn.net/shushi6969/article/details/113727768