您的位置:首页 > 其它

字符串中最大子串问题

2007-09-23 13:14 330 查看
输入一个字符串,输出其最大子串长度,即子串中任两个字符不相同 。本程序只能输入字母,空格以及逗号,并且不区分大小写,输出为第一个具有最大长度的子串以及其长度。


#include<iostream>


#include<string>


using namespace std;




int chartoi(char c)




...{


if(isalnum(c))




...{


if(isalpha(c))


return tolower(c)-'a';


else


return c-'0'+26;


}


else


if(isspace(c))


return 36;


else if(c==',')


return 37;


else




...{


cout<<"error input char"<<endl;


exit(0);


}


}




int substr(char* str, int len)




...{




int A[38]=...{0};


int i,j;


int maxlen=0,templen;


int beg=0,end=0;


for(i=0,j=0;i<len,j<len; ++j)




...{


int num=chartoi(str[j]);


if(A[num]==0)


A[num]=1;


else




...{


A[num]+=1;


int step;


for(step=i;step<=j;++step)//




...{


int num1=chartoi(str[step]);


if(A[num1]>1)




...{


--A[num1];


break;


}


}




i=step+1;




}


templen=j-i+1;


if(templen>maxlen)




...{


beg=i;


end=j;


maxlen=templen;


}


}


for(i=beg;i<=end;++i)


cout<<str[i];


cout<<endl;




return maxlen;


}




int main()




...{


char str[]="good morning, everyone";


cout<<str<<endl;


cout<<substr(str,strlen(str))<<endl;


return 0;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐