当前位置 博文首页 > Longest Common Prefix_让代码改变世界:LeetCode 14

    Longest Common Prefix_让代码改变世界:LeetCode 14

    作者:[db:作者] 时间:2021-07-10 18:57

    最近这几道题比较简单,就多写一些吧,另外这两天心情很复杂,只有编程能给我带来片刻的宁静啊。。。

    这次给大家说说leetcode第14题,可以说这是一道简单的不能再简单的题目了,这种题目就应该一次通过!当然我是没有,作为一名资深粗心程序员,我对自己的表现还是有充分估计的,所以并不能让我受到什么打击,怎么说呢,谁跟不要脸也没办法啊。

    玩笑归玩笑,还是希望自己以后能更细心一点,不要犯不该犯的错误,也希望大家以我为反面教材,多多修炼自己处理的能力,比较编程不是游戏,你可是要拿这个吃饭的!

    闲话少续,书归正传,上原题

    Write a function to find the longest common prefix string amongst an array of strings.

    从这个题目的样子就可以看出这是一道善良的小萌题,并不能激发大神的荷尔蒙,不过我们还是要从战术上重视敌人的。怎么说呢,就是要求一个最大公共前缀子串,其实这个东西简单就简单在这个“前”字上,不信你把“前”去了,去求最大公共子串,别多说,给你十个八个字符串就够你喝一壶的了。当然这些话是说给那些业余程序工作者说的,算法大神自然另当别论,也希望有大神看到这些话,把自己的方法给我们分享一下。

    边界值!别忘了边界值!

    上面这一行并不是打印错误,也不是作者突然疯掉了,只是给各位提个醒,当然更重要是给自己提个醒,不要忘了边界值,因为我这次确实也是忘了考虑边界值。

    剩下的其实就没有太多可说的了,要有也是语言的一些问题了,比如说装string的vector该怎么访问啊之类的,这些是《C++ Primer》的工作,我就不多说。直接看代码吧

    class Solution {
    public:
        string longestCommonPrefix(vector<string>& strs) {
    		if(strs.size()==0) return "";
    		int len=strs[0].size();
    		for(int i=1;i<strs.size();++i)
    		{
    			if(strs[i].size()<len)
    				len=strs[i].size();
    		}
    		//if(len==0) return "";
    		int j=0;
    		for( ;j<len;++j)
    		{
    			int i=0;
    			for( ;i<strs.size()-1;++i)
    			{
    				if(strs[i][j]!=strs[i+1][j])
    					break;
    			}
    			if(i!=strs.size()-1)break;
    		}
    		return string(strs[0],0,j);
        }
    };
    代码就是通过很一般的比较方法来做的,先比较所以str的第一个字符,再比较第二个。。。。我想谁都是这么干的吧,大神的我没看,因为运行时间已经达到最低了(4ms),当然不要太过于相信自己了,我一会儿再去看下吧,如果有更好的方法我再来给大家补上,这道题就到这里吧。
    再说点儿什么吗,,,,,,还是算了吧

    祝每一个坚持的人实现自己的梦想



    cs
    下一篇:没有了