78 最长公共前缀

原题网址:https://www.lintcode.com/problem/longest-common-prefix/description

描述

给k个字符串,求出他们的最长公共前缀(LCP)

您在真实的面试中是否遇到过这个题?  是

样例

在 "ABCD" "ABEF" 和 "ACEF" 中,  LCP 为 "A"

在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"

标签
枚举法
基本实现
字符串处理
LintCode 版权所有
 
思路:这道题比较简单,首先找出字符串数组中长度最小的字符串,记录其长度。然后指针从0开始一直到最小长度,遍历所有字符串,逐个对比它们在当前指针下的字符是否相等,不相等 return 结果;相等则把当前字符添加到结果中。
 
AC代码:
class Solution {
public:
    /**
     * @param strs: A list of strings
     * @return: The longest common prefix
     */
    string longestCommonPrefix(vector<string> &strs) {
        // write your code here
    string result="";
    int n=strs.size();
    if (n==0)
    {
        return result;
    }
    int minl=INT_MAX;
    for (int i=0;i<n;i++)//找到字符串中长度最小值;
    {
        if (strs[i].size()<minl)
        {
            minl=strs[i].size();
        }
    }
    if (minl==0)
    {
        return result;
    }
    int ind=0;
    while(ind<minl)//在长度最小值内搜索公共前缀;
    {
        char tmp=strs[0][ind];
        for (int i=1;i<n;i++)
        {
            if (strs[i][ind]!=tmp)
            {
                return result;
            }
        }
        result+=tmp;
        ind++;
    }
    return result;
    }
};

 

 

其他方法:

LintCode-最长公共前缀  直接两两对比,将第一个字符串作为参照,找出它与剩下字符串的最长公共前缀。

LintCode 最长公共前缀  以第一个字符串为参照,固定列,逐行对比,找出最大前缀。

https://www.jianshu.com/p/256c7a784283 方法同第二个链接,但代码更简洁

lintcode-78-最长公共前缀

 

 

转载于:https://www.cnblogs.com/Tang-tangt/p/9302355.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值