首页 > 编程语言 >编程题-最长公共前缀

编程题-最长公共前缀

时间:2024-12-11 13:59:26浏览次数:11  
标签:finnal 元素 前缀 strs 编程 数组 字符串 最长

题目:

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。

示例 1:

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

示例 2:

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

解题:

依次遍历字符串数组中的每个字符串,将str数组中的第一个元素字符串作为最终初始最终输出的公共前缀字符串finnal结果,并遍历str数组中的其他字符串元素中的每一个字符进行判断,不断更新缩小最终输出的公共前缀字符串finnal。具体代码如下所示:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        //判断strs字符串数组有一个元素,保存至num中
        int num = strs.size();
        //定义初始最终输出的公共前缀字符串为strs字符串数组中的第一个元素
        std::string finnal = strs[0];
        int max_finnal = 0;
        int sum = 0;
        //循环遍历strs字符串数组中的其他元素(字符串)
        for(int i=1;i<num;i++){
            int n = min(strs[0].size(),strs[i].size());
            //定义初始空字符串,作为此时循环的公共前缀字符串
            std::string in_finnal = "";
            //循环遍历字符串元素中的每个字符,判断是否相同
            for(int j=0; j<n; j++){
                string a =strs[0];
                char b = a[j];
                string c = strs[i];
                char d = c[j];
                //当字符相同时,保存至in_finnal字符串中作为公共前缀字符
                if(b==d){
                    in_finnal.push_back(b);
                    sum++;
                }
                //当字符不符合时,直接跳出,尽管后面有的位数有公共字符也不是前缀字符串了
                else{
                    break;
                }
            }
            //将此时对比的一组公共前缀字符串元素与最终输出公共前缀字符串数组进行比较,选取最小的值数值作为所有字符串数组元素中的值
            if(finnal.size()>in_finnal.size()){
                finnal = in_finnal;
            }
        }
        return finnal;
    }
};

特别关注:笔者在编写代码是遇到的小bug是关于字符串数组中字符调用问题,在调用字符串数组中元素的字符时不能连续调用,例如char c = strs[1][2],会产生报错,应拆分调用字符。将前面等式拆分成两个,string a = strs[1]; char c = a[2],不会发生报错。产生bug的问题可能是由于笔者之前使用python编写代码时的陋习,误将数组中元素的元素调用与字符串数组中元素中的字符调用划等号了,在后续C++代码实现时需特殊留意!

标签:finnal,元素,前缀,strs,编程,数组,字符串,最长
From: https://blog.csdn.net/qq_43287713/article/details/144379343

相关文章

  • GitHub 正式收录 MoonBit 作为一门通用编程语言!核心用户突破三万!
    MoonBit 编程语言正式被Github收录!这对于一个仅有两年发展时间的编程语言来说是一种高度认可,期待未来由MoonBit编写的项目数量快速增长,早日成为首个由国人研发迈进10万➕用户的编程语言。最近用户数已经接近3万(数据统计来源综合VisualStudioMarketplac......
  • Python异步编程(上):协程和任务
    原文链接:https://mp.weixin.qq.com/s/dQOocc7wHaGv7_cf476Ivg介绍了解异步编程前先了解一些概念:协程(coroutine)、任务(task)和事件循环(eventloop),在3.7以前还需要关心Future这个东西,不过之后提供的高级API弱化了这个概念,你基本不需要关心Future是什么。协程协程等于一个......
  • 代码随想录算法训练营第四十三天|LeetCode300.最长递增子序列、LeetCode674.最长连续
    前言打卡代码随想录算法训练营第49期第四十三天 (๑ˉ∀ˉ๑)首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode300......
  • 奇奇怪怪的编程语言:Malbolge
    Malbolge除了我们日常使用的Python、Java、C等主流编程语言外,还存在这么一类极为晦涩难懂的编程语言,被称为深奥的编程语言(Esotericprogramminglanguage,简称Esolang)。它们被设计用于测试计算机语言表达的极限,所以不会考虑它们的实用性。今天我们来看其中一个非常典型的例......
  • ChatGPT的“超能力“升级!AI写作、编程、审阅样样行
    点击访问chatTools免费体验GPT最新模型,包括o1推理模型、GPT4o和Claude等模型!在科技圈,OpenAI再次掀起了一阵惊涛骇浪。就在今天,他们推出了全新的Canvas功能,直接颠覆了我们与AI交互的传统方式。全新协作模式:不只是聊天Canvas不再是简单的对话工具,而是一个真正的协作......
  • 7-4 字符串中最长的连续出现的字符分数
    求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个。输入格式:第一行输入整数N,表示测试数据的组数。每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。输出格式:共一行,......
  • 从 动态前缀和 到 树状数组
    一.引言——动态前缀和前缀和求解我会在最后给出,想看的直接翻到最后,这里默认大家都知道前缀和怎么求解。有这么一个场景,我们需要不断修改数组中的元素,并且问我们数组内某个区间的和。如果使用最原始的前缀和来求解,每次我们都要重新求一遍sum[],更新时间复杂度是O(n)的,查询是O(1)的......
  • Python 网络编程
    Python提供了两个级别访问的网络服务:低级别的网络服务支持基本的Socket,它提供了标准的BSDSocketsAPI,可以访问底层操作系统Socket接口的全部方法。高级别的网络服务模块SocketServer,它提供了服务器中心类,可以简化网络服务器的开发。什么是Socket?Socket又称"套接......
  • leetcode 2958. 最多 K 个重复元素的最长子数组
    2958.最多K个重复元素的最长子数组classSolution{public:intmaxSubarrayLength(vector<int>&nums,intk){intsize=nums.size(),resLenth=0;unordered_map<int,int>numAdded;for(intleft=0,right=0;right<siz......
  • shell编程9 重定向操作和不同脚本的互相调用 (泷羽sec)
    声明学习视频来自B站UP主泷羽sec,如涉及侵泷羽sec权马上删除文章。笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了解学习哪些知识对于我们渗透......