Write a function to find the longest common prefix string amongst an array of strings.
Analysis:
Pretty straight-forward. Choose any string, and compare its prefix - with length from 1 to the string length - with all other strings.
The time complexity is O(k*n), where k is the length of the string we choose, and n is the number of strings.
Code:
class Solution { public: string longestCommonPrefix(vector<string> &strs) { int size = strs.size(); string result = ""; if (size==0) return result; if (size==1) return strs.front(); if (strs[0].empty()) return result; int len = strs[0].length(); // The longest prefix cannot be longer than any string, so take 1st string for (int k = 1; k <= len; k++) { // k - length of current prefix string pref = strs[0].substr(0, k); for (int i = 1; i < size; i++) {// check thru all the strings in the vector, i - current string if (strs[i].empty()) return result; string pref_curr = strs[i].substr(0, k); if (pref.compare(pref_curr) != 0) return pref.substr(0, k-1); if (k==len && i==size-1) return pref; } } } };
No comments:
Post a Comment