---
# System prepended metadata

title: 14. Longest Common Prefix
tags: [C++, LeetCode-Easy]

---

# 14. Longest Common Prefix
Difficulty: Easy

## Solution

```cpp=
/**
*** Author: R-CO
*** E-mail: daniel1820kobe@gmail.com
*** Date: 2020-09-28
**/
#include <cstdlib>
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <vector>
using std::vector;

struct TestCaseStruct {
  vector<string> input;
  string expected_output;
};

class Solution {
 public:
  string longestCommonPrefix(vector<string> &strs) {
    if (strs.empty()) {
      return string("");
    }

    string output;

    bool is_common_prefix_continued = true;
    char current_char;
    size_t index = 0;
    while (is_common_prefix_continued) {
      current_char = strs[0][index];
      for (const auto &str : strs) {
        if (str.size() <= index || str[index] != current_char) {
          is_common_prefix_continued = false;
          break;
        }
      }

      if (is_common_prefix_continued) {
        output += current_char;
      }
      ++index;
    }

    return output;
  }
};

int main(int argc, char *argv[]) {
  vector<TestCaseStruct> test_cases = {{{"flower", "flow", "fly"}, "fl"},
                                       {{"dog", "racecar", "car"}, ""}};

  int test_case_index = 0;
  Solution solution;
  for (auto &test_case : test_cases) {
    if (solution.longestCommonPrefix(test_case.input) ==
        test_case.expected_output) {
      cout << "test_case[" << test_case_index << "] is pass." << endl;
    } else {
      cout << "test_case[" << test_case_index << "] is fail." << endl;
    }
    ++test_case_index;
  }

  /*
  vector<string> test_case_1 = {"flower", "flow", "fly"};
  vector<string> test_case_2 = {"dog", "racecar", "car"};

  Solution solution;
  auto output_1 = solution.longestCommonPrefix(test_case_1);
  auto output_2 = solution.longestCommonPrefix(test_case_2);

  std::cout << "output_1 = [" << output_1 << "]" << std::endl;
  std::cout << "output_2 = [" << output_2 << "]" << std::endl;
  */

  return EXIT_SUCCESS;
}

```

## Result

Success
Details 
Runtime: 8 ms, faster than 70.27% of C++ online submissions for Longest Common Prefix.
Memory Usage: 9.4 MB, less than 43.58% of C++ online submissions for Longest Common Prefix.

###### tags: `LeetCode-Easy` `C++`
