今天,看了很多的公司的面试题。感觉最大字符串匹配问题是个考察的重点。下午特意写个小程序调试一下。
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;#define MAXLEN 100
char* max_str_cmp(char *str)
{
if (str == NULL)
{
cout<<"str is empty!"<<endl;
return 0;
}
int len = strlen(str),i = 0,j = 0,index = 0,t_maxlen = 0,t_index = 0;
int maxlen = 0;
char *p ,*q,*temp_p,*temp_q;
p = str;
while (i<len)
{
q = p + 1;
j = i + 1;
while (j<len)
{
temp_p = p;
temp_q = q;
t_maxlen = 0;
while (*temp_p++ == *temp_q++)
{
t_index = j;
t_maxlen++;
}
if (t_maxlen>maxlen)
{
maxlen = t_maxlen;
index = t_index;
}
j++;q++;
}
i++;p++;
}
char *max_str = new char [maxlen];
for (int i = 0;i<maxlen;i++)
{
max_str[i] = str[index + i];
}
max_str[maxlen] = '/0';
return max_str;
}int _tmain(int argc, _TCHAR* argv[])
{
char *str = new char [MAXLEN];
cout<<"input the str:"<<endl;
cin>>str;
cout<<max_str_cmp(str)<<endl;
delete [] str;
return 0;
}