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)
  • 相关阅读:
    2020-2021-1学期 20202424 《网络空间安全导论》第一周学习总结
    斐波那契数列
    第五周学习总结
    第四周学习总结
    黑客偶像
    第三周学习总结
    关于罗马数字转换成阿拉伯数字的理解
    十进制转二进制(python转换代码)
    第二周学习总结
    师生关系
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/7966088.html
Copyright © 2011-2022 走看看