LeetCode Longest Common Prefix

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
个人分类: leetcode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

LeetCode Longest Common Prefix

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭