关闭

LeetCode Longest Common Prefix

标签: leetcode
73人阅读 评论(0) 收藏 举报
分类:

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;  
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16837次
    • 积分:1868
    • 等级:
    • 排名:千里之外
    • 原创:178篇
    • 转载:7篇
    • 译文:0篇
    • 评论:1条
    最新评论