#include <algorithm>
using namespace std;
//
#define MAX_CHAR_COUNT 256
//
int MaxSubString(char* _pstrSrc, char*& _pBegin, int & _iLength)
{
char* pcPos[MAX_CHAR_COUNT] = {0};
char* p = _pstrSrc;
char c = 0;
char* pBegin = _pstrSrc;
int iMaxLen = 0;

while ((c=(*p++)) != '\0')
{
if (pcPos[c] >= pBegin)
{
pBegin
= pcPos[c]+1;
iMaxLen
= p-pBegin;
pcPos[c]
= p-1;
}
else
{
pcPos[c]
= p-1;
iMaxLen
++;
}

if (iMaxLen > _iLength)
{
_pBegin
= pBegin;
_iLength
= iMaxLen;
}
}

return 0;
}
//
void CodeWrapper()
{
char cSrc[] = "bfbcdgef";//bbcdebfge"; //bbcdebfbcdgef
int iMaxLen = 0;
char* pBegin = NULL;
MaxSubString(cSrc, pBegin, iMaxLen);
printf(
"%d\n", iMaxLen);
copy(pBegin, pBegin
+iMaxLen, ostream_iterator<char>(cout, ""));
}

 

posted on 2010-10-09 11:41  venxman  阅读(300)  评论(0编辑  收藏  举报