14. 最长公共前缀----LeetCode

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

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

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

 

 

 

缝补丁式编码  想问题太简单 只考虑的题目给出的两种测试用例  出一次错修改一次代码  

没考虑的测试用例  [""]  ["a"] ["a","a"] ["ab","abcc"] ["a","a","b"]

 希望以后考虑临界值全面一点  

#include<iostream>
#include <vector>
using namespace std;
class Solution
{
public:
    string longestCommonPrefix(vector<string>& strs)
    {

        if(strs.size()==0)
        {
            return "";
        }
        if(strs.size()==1)
        {
            return strs[0];
        }
        string ss=strs[0];
        int len=ss.length();
        int count=0;
        if(len==1)
        {
            for(int j=1; j<strs.size(); j++)
            {
                string sts=strs[j];
                int lo=sts.find(ss);
                if(lo!=0)
                {

                    return "";
                }

            }
             return ss;
        }
        int eq=0;
        for(int i=1; i<=len; i++)
        {
            string scut=ss.substr(0,i);
            for(int j=1; j<strs.size(); j++)
            {
                string sts=strs[j];
                if(sts==ss)
                {

                    eq++;

                }

                int lo=sts.find(scut);
                if(lo!=0)
                {

                    count=i;
                    return ss.substr(0,count-1);
                }

            }

        count = i;
        }
        if(count=len){
            return ss;
        }
        if(eq==strs.size())
        {
            return ss;
        }

        return "";
    }
};
int main()
{
    vector<string> strs= {"ab","abcc"};
    //vector<string> strs= {"flow","flowl"};
    Solution so;
    string re=so.longestCommonPrefix(strs);
    cout<<re;
    return 0;
}

 代码太繁琐仍需修改 

posted @ 2020-04-21 15:10  Evaders  阅读(126)  评论(0)    收藏  举报