字符串生成“后缀数组”《编程珠玑》
#include<iostream>using namespace std;const int N=26;extern int com(const void *a,const void *b);int main(){char *s="Gejun Com on C Come in";if(strlen(s)<=26){ int i=0;char *as={NULL}; while(*s!='\0') { if(*s!=' ') as=s; s++; } int num=i; qsort(as,num,sizeof(char*),com); for(i=0;i<num;i++) cout<<as<<endl;// cout<<*(char*)as<<" "<<*(char*)as<<endl;}system("Pause");return 0;}int com(const void *a,const void *b){ //char t1=**(char**)a,t2=**(char**)b;//cout<<t1<<" "<<t2<<" for test"<<endl;return strcmp(*(char**)a,*(char**)b);} 上述代码的作用就是将字符串"Gejun Com on C Come in"转换成它的后缀数组,结果图:
C Come inCom on C Come inCome inGejun Com on C Come ine inejun Com on C Come ininjun Com on C Come inm on C Come inme innn C Come inn Com on C Come inom on C Come inome inon C Come inun Com on C Come in请按任意键继续. . . 后缀数组的作用是用来识别字符处的最长重复子字符串!
页:
[1]