【LeetCode 14】最长公共前缀

题目链接

【题解】

二分最长前缀的长度。 然后暴力把第2..n个字符串和第1个字符串的前mid个字符匹配。

还有一种比较厉害的算法。
把这n个字符串加入到字典树当中去。
然后根节点到第一个有分支的节点路径上的点形成的字符串就是最长前缀了。

【代码】

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int l = 1,r = 0,ans = -1;
        for (int i = 0;i < (int)strs.size();i++){
            r = max(r,(int)strs[i].size());
        }
        while (l<=r){
            int mid = (l+r)/2;
            int ok = 1;
            for (int i = 1;i < (int)strs.size();i++){
                for (int j = 0;j < mid;j++)
                    if (strs[i][j]!=strs[0][j]){
                        ok = 0;
                        break;
                    }
                if (!ok) break;
            }
            if (ok){
                l = mid+1;
                ans = mid;
            }else r = mid-1;
        }
        string temp = "";
        for (int i = 0;i < ans;i++) temp += strs[0][i];
        return temp;
    }
};
posted @   AWCXV  阅读(109)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
历史上的今天:
2018-11-06 【Zoj 4061】Magic Multiplication
点击右上角即可分享
微信分享提示