注意如果没有第二关键字则补0;
长度为1
代码
for(int i=1;i<=n;++i)Rank[i]=ch[i];//首先Rank赋为字符串的asc码,即它的排名 //基数排序过程 for(int i=1;i<=n;++i)c[Rank[i]]++; for(int i=1;i<=m;++i)c[i]+=c[i-1]; for(int i=n;i>=1;--i)sa[c[Rank[i]]--]=i;//--可以出理有字符串相同的情况
注意如果没有第二关键字则补0;
长度为1
代码
for(int i=1;i<=n;++i)Rank[i]=ch[i];//首先Rank赋为字符串的asc码,即它的排名 //基数排序过程 for(int i=1;i<=n;++i)c[Rank[i]]++; for(int i=1;i<=m;++i)c[i]+=c[i-1]; for(int i=n;i>=1;--i)sa[c[Rank[i]]--]=i;//--可以出理有字符串相同的情况
内容版权声明:除非注明,否则皆为本站原创文章。