读书人

字符串最小示意模板

发布时间: 2012-10-19 16:53:36 作者: rapoo

字符串最小表示模板


#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int gao(char *a,int len){    int i=0,j=1,k=0;    while(i<len && j<len && k<len){        int cmp = a[(j+k)%len]-a[(i+k)%len];        if(cmp==0)            k++;        else{            if(cmp>0)                j+=k+1;            else                i+=k+1;            if(i==j)j++;            k=0;        }    }    return min(i,j);}int main(){    char s[100];    int len;    while(scanf("%s",s)==1){        len=strlen(s);        printf("%d\n",gao(s,len));    }}

另外判断两个字符串是否同构,方法和上面是类似的,具体参见 周源的论文《浅析“最小表示法”思想在字符串循环同构问题中的应用》

读书人网 >编程

热点推荐