#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[N]={NULL}; while(*s!='\0') { if(*s!=' ') as[i++]=s; s++; } int num=i; qsort(as,num,sizeof(char*),com); for(i=0;i<num;i++) cout<<as[i]<<endl; // cout<<*(char*)as[0]<<" "<<*(char*)as[1]<<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 in Com on C Come in Come in Gejun Com on C Come in e in ejun Com on C Come in in jun Com on C Come in m on C Come in me in n n C Come in n Com on C Come in om on C Come in ome in on C Come in un Com on C Come in 请按任意键继续. . .后缀数组的作用是用来识别字符处的最长重复子字符串!