每日一练(35):最长公共前缀

简介: 编写一个函数来查找字符串数组中的最长公共前缀。

编写一个函数来查找字符串数组中的最长公共前缀。


如果不存在公共前缀,返回空字符串 ""。


示例 1:


输入:strs = ["flower","flow","flight"]

输出:"fl"


示例 2:


输入:strs = ["dog","racecar","car"]

输出:""


解释:输入不存在公共前缀。


提示:


1 <= strs.length <= 200


0 <= strs[i].length <= 200


strs[i] 仅由小写英文字母组成


来源:力扣(LeetCode)


链接:https://leetcode-cn.com/probl...


方法一:逐字符比较


思路分析


先第一个和第二个比,保存公共前缀,再和第三个比,以此类推


string longestCommonPrefix(vector<string>& strs) {
    if (strs.size() == 0) {
        return "";
    }
    string ans = strs[0];//先从strs[0]开始,与后面一个比较
    for (int i = 0; i < strs.size(); i++) {
        string s = ans;//保存上次的公共前缀
        ans = "";
        for (int j = 0; j < strs[i].size(); j++) {
            if (s[j] == strs[i][j]) {
                ans += s[j];
            } else { //遇到不一样的就退出循环
                break;
            }
        }
        if (ans == "") {
            break;
        }
    }
    return ans;
}


方法二:双指针


算法流程:


先找出数组中字典序最小和最大的字符串,最长公共前缀即为这两个字符串的公共前缀


string longestCommonPrefix(vector<string>& strs) {
    if (strs.size() == 0) {
        return "";
    }
    const auto p = minmax_element(strs.begin(), strs.end());
    for (int i = 0; i < p.first->size(); i++) {
        if (p.first->at(i) != p.second->at(i)) {
            return p.first->substr(0, i);
        }
    }
    return *p.first;
}


目录
相关文章
|
人工智能 Java 关系型数据库
分享66个JavaGame源码总有一个是你想要的
分享66个JavaGame源码总有一个是你想要的
1076 0
|
机器学习/深度学习 计算机视觉 网络架构
改进YOLOv8:添加CBAM注意力机制(涨点明显)
改进YOLOv8:添加CBAM注意力机制(涨点明显)
7331 1
|
机器学习/深度学习 数据采集 编解码
优酷老片修复算法,超高清重温童年回忆
优酷老片修复算法,超高清重温童年回忆
699 0
优酷老片修复算法,超高清重温童年回忆
|
8月前
|
人工智能 自然语言处理 数据可视化
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
Data Formulator 是微软研究院推出的开源 AI 数据可视化工具,结合图形化界面和自然语言输入,帮助用户快速创建复杂的可视化图表。
763 10
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
|
6月前
|
Cloud Native 关系型数据库 MySQL
华鼎冷链科技 × 阿里云瑶池数据库,打造全链路协同的智慧冷链新标杆
从 PolarDB 的高性能数据库服务到 AnalyticDB 的强大数据分析,阿里云提供的丰富产品矩阵为华鼎冷链科技构建了全面的解决方案,推动华鼎冷链科技从成本中心向效率中心转型。
|
弹性计算 人工智能 运维
0代码!2种方式一键部署 DeepSeek 系列模型
DeepSeek 凭借卓越性能和广泛应用场景,获得全球高度关注。DeepSeek-R1-Distill 是基于 DeepSeek-R1 生成的开源小模型,参数规模更小、推理成本更低,且基准测试表现出色。本文以 DeepSeek-R1-Distill-Qwen-7B-GGUF 模型为例,介绍如何通过阿里云 CAP 平台和函数计算 FC 部署 DeepSeek-R1 模型。用户可选择模型服务或应用模版两种方式快速部署,最快 10 分钟完成,最低 0 元起,支持 API 调用及第三方平台集成,具备免运维、弹性伸缩和高可用性,按量付费模式有效降低成本。欢迎点击阅读原文体验部署。
|
前端开发 JavaScript
在 Vue3 + ElementPlus 项目中使用 computed 实现前端静态分页
本文介绍了在Vue3 + ElementPlus项目中使用`computed`属性实现前端静态分页的方法,并提供了详细的示例代码和运行效果。
574 1
在 Vue3 + ElementPlus 项目中使用 computed 实现前端静态分页
|
机器学习/深度学习 人工智能 弹性计算
|
存储 安全 编译器
【c++入门】引用,内联函数,auto
朋友们大家好,本节我们来到c++中一个重要的部分:引用
【c++入门】引用,内联函数,auto
|
移动开发 安全 数据安全/隐私保护
iOS 代码混淆和加固技术详解
iOS 代码混淆和加固技术详解