LeetCode Longest Common Prefix

原创 2017年01月03日 14:01:10

Write a function to find the longest common prefix string amongst an array of strings.


关于这个题目的描述有歧义,究竟是求解所有字符串的最长公共前序,还是求解每对字符串中的最长的公共子序列。本题的实际是前一种情况。


思路一:思路很直接,就像直男癌一样。。。但需要注意边界输入的处理

代码如下:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
    string result = "";
    if(strs.size() == 1)
        return strs[0];
    for(int ind =0; strs.size() > 0;result+=strs[0][ind],ind++)
        for(int i=1;i<strs.size();i++)
            if(ind >= strs[i].size() || strs[0][ind] != strs[i][ind])
                return result;
    return result;
    }
};

思路二先对字符串进行排序,再求首尾两个字符串的公共前序,即为题目的求解。该思路的效率并没有提升。。。

代码如下:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
     string result = "";  
      
    if (strs.size() > 0){  
      
        sort(strs.begin(),strs.end());  
          
        string a = strs[0];  
        string b = strs[strs.size()-1];  
          
        for (int i = 0; i < a.length(); i ++){  
            if (b.length() > i && b[i] == a[i]){  
                result += b[i];  
            }  
            else {  
                return result;  
            }  
        }
    }
    return result;  
    }
};


[LeetCode][14]Longest Common Prefix解析 两种算法和底层源码的深入对比-Java实现

Q: Write a function to find the longest common prefix string amongst an array of strings. A: 这题...
  • u014629433
  • u014629433
  • 2016年06月15日 13:12
  • 1793

Leetcode刷题记——14. Longest Common Prefix(最长公共前缀)

一、题目叙述: Write a function to find the longest common prefix string amongst...
  • sunshine0_0
  • sunshine0_0
  • 2016年10月17日 17:09
  • 173

LeetCode 第十四题 Longest Common Prefix(最长公共前缀)

一,Longest Common Prefix(最长公共前缀) 1,问题描述: 写一个函数,在一个字符串数组中查找最长的公共前缀。2,最长公共前缀,例如 在”ABCD”, “ABEF”...
  • wodedipang_
  • wodedipang_
  • 2016年09月27日 11:33
  • 189

LeetCode Longest Palindromic Substring 最长回文子字符串 两种方法分析解答

最难想的地方:P代表一个表,比较难想的就是P表的下标i和j代表原字符串中的两个前后下标s[i]和s[j]的位置。 如果P[i,j]为真,当且仅当si-1,si-2...sj-1,sj这一个子串都为pa...
  • kenden23
  • kenden23
  • 2013年11月23日 10:27
  • 2828

【LeetCode-面试算法经典-Java实现】【005-Longest Palindromic Substring(最长回文子串)】

【005-Longest Palindromic Substring(最长回文子串)】给定一个字符串S,找出它的最大的回文子串,你可以假设字符串的最大长度是1000,而且存在唯一的最长回文子串。动态规...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月17日 06:42
  • 2381

常见算法问题之最长公共子串问题(Longest common substring problem)

对于寻找两个字符串的最长公共子字符串的问题,暴力搜索的方式的时间复杂度将高达O(n^3), 而通过后缀树的方式可将时间复杂度降低到O(n^2)。以下是我实现的C++源码:#include #incl...
  • jaye16
  • jaye16
  • 2017年02月16日 23:09
  • 314

LeetCode题解整理版(一)

Evaluate Reverse Polish Notation 逆波兰表达式求值,经典问题。 遇到数字入栈,遇到符号取栈顶的两个出来运算,再将结果入栈,最后栈里剩下的一个元素就是结果了。 ...
  • xualaleilei
  • xualaleilei
  • 2016年04月04日 17:30
  • 433

寻找若干个字符串的最长公共前缀 Longest Common Prefix

题目来源于Leetcode。 题目:给出若干个字符串,找出他们的最长公共前缀子串。 假设这里字符串有n个,平均长度为m。 方法: 1、所求的最长公共前缀子串一定是每个字符串的前缀子串。所以随便...
  • luckyjoy521
  • luckyjoy521
  • 2013年10月20日 11:44
  • 5611

Longest Common Prefix 字符串数组中查找最长相同前缀字符串@LeetCode

package Level2; import java.util.Arrays; /** * Longest Common Prefix * * Write a function to...
  • hellobinfeng
  • hellobinfeng
  • 2013年11月09日 05:58
  • 2514

最长公共子序列(Longest Common Sequence)

问题的定义: 子序列 –X=(A, B, C, B, D, B) – Z=(B, C, D, B)是X的子序例 –W=(B, D, A)不是X的子序例 公共子序列 – Z是序列X与Y的公共子序...
  • u013068755
  • u013068755
  • 2017年04月22日 16:22
  • 602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Longest Common Prefix
举报原因:
原因补充:

(最多只允许输入30个字)