红桃J

用心写好每行完美的代码,远比写一堆更有价值

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

如果字符串数组只有一个,那么最长前缀就是它本身;如果有多个,我们把第一个设为当前最长前缀,拿当前最长前缀去和第二个比较,再选出最长前缀,一次往后即可!

代码:

#include<iostream>
#include<string>
#include<vector>

using namespace std;


string longestCommonPrefix(vector<string> &strs) 
{
    
    int L = strs.size();
    if (L <1 )
    {
        return "";
    }
    string prefix = strs[0];
    for (int i = 1; i < L; i++)
    {
        int LPre = prefix.size();
        int LNow = strs[i].size();
        int LQ = LPre>LNow ? LNow : LPre;
        int j;
        for (j = 0; j < LQ; j++)
        {
            if (prefix[j] != strs[i][j])
                break;
        }
        if (j == LNow){
            prefix = strs[i];
        }
        else
        {
            prefix = strs[i].substr(0, j);
        }
    }
    return prefix;
}

int main()
{
    vector<string> strs = {"asdqwer","as","asdklj"};
    cout << longestCommonPrefix(strs) << endl;
}

 

posted on 2015-04-11 14:56  红桃J  阅读(150)  评论(0编辑  收藏  举报