zoukankan      html  css  js  c++  java
  • 14. 最长公共前缀(C++)[简单]

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

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

    示例 1:

    输入: [“flower”,“flow”,“flight”]
    输出: “fl”

    示例 2:

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

    说明:

    所有输入只包含小写字母 a-z 。

    虽说属于简单类题目,我还是没有什么思路,感觉自己蠢到家了。。
    看了B站上面的讲解:
    摸清楚了思路:
    手动自己模拟一遍
    例如输入:[edwardshi,edward,edwar,edwardshidd]
    首先将edwardshi存起来,后面的每一个字符串跟其比较,如若在开头找不到
    将edwardshi的长度一直-1,-1,-1,edwardsh,edwards,edward,再做比较
    ,直到找到edward为止,找不到则返回 “”;
    继续下一个字符串比较…
    这样子比较完,留下的就是公共的前缀了,,说实话,挺巧妙的方法,学习学习。。

    class Solution {
    public:
        string longestCommonPrefix(vector<string>& strs) {
            int i ;     
    
            if(strs.size() == 0) 
                return "";
            string s = strs[0];
            for(i = 1; i< strs.size(); i++){
                while(strs[i].find(s) != 0){
                    s = s.substr(0,s.size()-1);
                    if(s.empty())
                        return "";
                }
            }
            return s;
        }
    };
    
  • 相关阅读:
    属性,选择器和css
    笔记
    浏览器
    单位
    marquee 滚动标签
    双飞翼布局与圣杯布局
    随便看看吧
    光标的形状 颜色的表示方法
    如何实现浏览器title中的小图标
    解决浏览器兼容问题 补充
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/12358979.html
Copyright © 2011-2022 走看看