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