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)
原文地址:https://www.cnblogs.com/dapeng-bupt/p/7966088.html