14.最长公共前缀

题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。

思路:
1.按顺序比较下来:3个字符串的最长公共前缀一定被包含在前2个字符串的最长公共前缀之中,同理,N个字符串的前缀一定是其中(N-1)个字符串的最长公共前缀与第N个字符串的最长公共前缀。
2。关于 for auto::
想要拷贝元素:for(auto x:range)
想要修改元素 : for(auto &&x:range)
想要只读元素:for(const auto& x:range)
3.
关于substr*:
形式:s.substr(pos, n)
解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
代码:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string r = strs.size()?strs[0]:"";
        //第一句代码含义为:若有输入值,则字符串r的值即为数组第一个字符串,否则为空字符串
        for(auto s:strs)//将每一个str拷贝给s
        {
            while(r!=s.substr(0,r.size()))
            {
                r=r.substr(0,r.size()-1);
                if(r=="")
                    return "";
            }
            //当下一个字符串的r长度的前缀不等于r时,就让r的长度减1
        }
        return r;
    }
};
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 输入: [...
    不要甜的红烧肉阅读 722评论 0 0
  • 14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例1...
    不爱去冒险的少年y阅读 272评论 0 0
  • 一、题目 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1: 示例 ...
    Mage阅读 666评论 0 0
  • 今天,我和妈妈一起去逛街,看了衣服和鞋子。我看见妈妈身上穿的衣服,但我从没见她买过,于是我就问妈妈,她这件衣服什么...
    泥鳅11阅读 93评论 0 0
  • 现在已经进入三月份了 我的舞蹈开始有些变化 因为,在上周我临时决定加上爵士舞的部分 后期还是要把舞蹈音乐混合一起 ...
    李_昀倩阅读 125评论 0 2