Longest Common Prefix - C++ Solution

1. Introduction

In this blog post, we address a common problem in string processing - finding the longest common prefix (LCP) among a set of strings. This problem is particularly relevant in areas such as data mining, search engines, and text analysis.

Problem

The task is to find the longest string that is a prefix of all strings in a given set. The longest common prefix for a set of strings is the longest string that appears at the beginning of all the strings.

2. Solution Steps

1. Start by considering the entire first string as the longest common prefix.

2. Iterate through the remaining strings in the set, and for each, shorten the current longest common prefix if necessary.

3. Compare characters of the longest common prefix with the current string and reduce its length to the point where all characters match.

4. Continue this process until all strings are processed.

5. The remaining longest common prefix after comparing with all strings is the result.

3. Code Program

#include <iostream>
#include <vector>
#include <string>
using namespace std;

// Function to find the longest common prefix
string longestCommonPrefix(const vector<string>& strs) {
    if (strs.empty()) return "";

    string prefix = strs[0];
    for (int i = 1; i < strs.size(); i++) {
        int j = 0;
        while (j < prefix.length() && j < strs[i].length() && prefix[j] == strs[i][j]) {
            j++;
        }
        prefix = prefix.substr(0, j);
        if (prefix.empty()) break;
    }
    return prefix;
}

int main() {
    vector<string> strs = {"technique", "technician", "technology", "technical"};
    cout << "Longest Common Prefix: " << longestCommonPrefix(strs) << endl;
    return 0;
}

Output:

Longest Common Prefix: techn

Explanation:

The function longestCommonPrefix finds the longest common string at the start of each string in the given set. It initially assumes the entire first string as the common prefix and then iteratively shortens it based on the subsequent strings. For example, with the input ["technique", "technician", "technology", "technical"], the longest common prefix is techn. The algorithm is efficient and only iterates through each string once.


Comments