zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    HDU
    纯C++去雾算法
    拓扑排序
    SG 函数初步 HDU 1536 &amp;&amp; HDU 1944
    <html>
    XML制作RSS源
    ACM退役前2个月总结
    javascript 的 jasmine 的測试语句
    Vue.js父与子组件之间传参
    $.contents().find设置的data在iframe子页面无法获取值
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/7966088.html
Copyright © 2011-2022 走看看