📌  相关文章
📜  使用排序查找最长公共前缀的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:36:39.712000             🧑  作者: Mango

使用排序查找最长公共前缀的 C++ 程序

在编程中,经常会遇到需要找到一组字符串中的最长公共前缀的情况。其中,一种常见的方法是通过排序来解决。本文将介绍如何使用排序查找最长公共前缀的C++程序。

思路

使用排序查找最长公共前缀的基本思路如下:

  1. 先将字符串数组按照字典序来进行排序;
  2. 比较排完序后的第一个字符串和最后一个字符串的共同前缀;
  3. 如果其共同前缀为空,则返回空;
  4. 如果不为空,则返回其共同前缀。
代码

以下是使用排序查找最长公共前缀的C++程序:

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

string longestCommonPrefix(string strs[], int n) {
    if(n == 0) return "";
    if(n == 1) return strs[0];
    sort(strs, strs+n);
    string first = strs[0];
    string last = strs[n-1];
    int i=0;
    while(i<first.length() && i<last.length() && first[i]==last[i]) i++;
    return first.substr(0, i);
}

int main() {
    string strs[] = {"flower", "flow", "flight"};
    int n = sizeof(strs)/sizeof(strs[0]);
    cout << longestCommonPrefix(strs, n) << endl;
    return 0;
}
代码解释

我们首先定义了一个longestCommonPrefix() 函数,该函数接受一个字符串数组和其长度,并返回最长公共前缀。在函数中,我们使用了一些 if 语句来处理一些特殊情况。

然后我们对字符串数组进行排序,使用了C++中的sort函数。接下来,我们分别将排序后的第一个和最后一个字符串存储在两个字符串变量firstlast中。最后,我们使用 while 循环来比较这两个字符串中的共同前缀,并返回其值。

在主函数中,我们只需创建一个字符串数组,并计算其长度。调用longestCommonPrefix()函数并将其值打印出来。

结论

本文介绍了如何使用排序查找最长公共前缀的C++程序。排序算法可以帮助我们更快地查找字符串数组中的最长公共前缀,这对于解决许多编程问题都非常有帮助。