当前位置: 首页 > article >正文

14.最长公共前缀

刷算法题:

第一遍:1.看5分钟,没思路看题解

2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。

3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法)

4.整理到自己的自媒体平台。

5.再刷重复的类似的题目,根据时间和任务安排刷哪几个板块

6.用c++语言 都刷过一遍了 就刷中等

一.题目

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

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

示例 1:

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

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

二、反思

1.自己的解法

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string res="";
        int n=strs.size();
        for(int i=0;i<strs[0].size();i++){//这里还很纳闷,用一个定值,但其实如果第一个就已经是最大值了
            char index=strs[0][i];

            for(int j=0;j<n;j++){
                if(strs[j][i]!=index){
                    return res;
                }
                
            }
            res.push_back(index);
        }

        return res;
    }
};

2.题目的解法 

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (!strs.size()) {
            return "";
        }
        int minLength = min_element(strs.begin(), strs.end(), [](const string& s, const string& t) {return s.size() < t.size();})->size();
        int low = 0, high = minLength;
        while (low < high) {
            int mid = (high - low + 1) / 2 + low;
            if (isCommonPrefix(strs, mid)) {
                low = mid;
            }
            else {
                high = mid - 1;
            }
        }
        return strs[0].substr(0, low);
    }

    bool isCommonPrefix(const vector<string>& strs, int length) {
        string str0 = strs[0].substr(0, length);
        int count = strs.size();
        for (int i = 1; i < count; ++i) {
            string str = strs[i];
            for (int j = 0; j < length; ++j) {
                if (str0[j] != str[j]) {
                    return false;
                }
            }
        }
        return true;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/longest-common-prefix/solutions/288575/zui-chang-gong-gong-qian-zhui-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 3.思路的异同

这一次写简单题纯粹就是靠直觉写的,当然中间也有一些bug的地方,后面也改正了。

三.进步的地方

 


http://www.kler.cn/a/398380.html

相关文章:

  • 大模型论文精华-AI在医疗诊断、语言学习与情绪识别等领域的最新应用进展
  • Redis性能优化——针对实习面试
  • 嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
  • 使用OpenFeign实现HTTP调用的最简单案例
  • go环境搭建
  • 【nginx】client timed out和send_timeout的大小设置
  • 基于Kafka2.1解读Consumer原理
  • memblock内存分配器
  • 智能算法助力衍生品市场投资分析:正大科技的量化模型应用
  • java组件安全
  • Scala入门基础(17.1)Set集习题
  • Kotlin深度面试题:协程、密封类和高阶函数
  • 计算机网络 (3)计算机网络的性能
  • React前端框架入门教程:从零开始构建一个简单的任务管理应用
  • 麒麟Server下安装东方通TongLINK/Q
  • 01.02、判定是否互为字符重排
  • 【c++篇】:二叉搜索树--有序存储与高效查找的关键
  • 谷歌新作:Unbounded开放世界RPG,AI定义无限游戏新纪元
  • git 常见冲突场景与解决方法
  • 5.11 ResNet
  • 【最新鸿蒙开发之性能优化——动态加载和延迟加载】
  • mac上使用docker搭建gitlab
  • 虚幻引擎 CEO 谈元宇宙:发展、策略与布局
  • 创建vue3项目步骤
  • Vector Optimization – Multiple Lanes
  • LeetCode题练习与总结:移掉 K 位数字--402