LeetCode 14. Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
题目的描述很简单,就是求多个字符串公共前缀,其实可以考虑先对字符向量用sort()进行排序,然后从前向后遍历,复杂度为O(S) + O(n*logn),n是字符串的数量,S为整个字符向量中所有的字符数量,这也就是“横向遍历”。
我在这里采用的是“纵向遍历”,也就是先比较每个字符串第一个字符,在比较每个字符串第二个字符……以此类推,设定一定的终止条件,然后返回公共前缀,代码如下:
1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 //经过自己的思考以及参考别人的代码,我最终得到了这一版本 5 if (strs.size()==0) return ""; 6 for (int i=0; i<strs[0].length(); i++) 7 for (int j=0; j<strs.size(); j++) 8 if (strs[0][i]!=strs[j][i]) //这里的if语句里面的内容其实没必要太过于复杂,只需要写一条这样的判断就够了 9 return strs[0].substr(0, i); 10 return strs[0]; 11 } 12 };
- 时间复杂度:O(S),S为字符向量中所有字符数量
- 空间复杂度:O(1)