最小表示法和最大表示法模板

来源:互联网 发布:学java好找工作不 编辑:程序博客网 时间:2024/05/20 04:51

最小表示法:

int GetMin(char *str){    int i,j,k;    i=0,j=1,k=0;    while(i<n && j<n && k<n)    {        int t=str[i+k] - str[j+k];        if(t==0)            k++;        else        {            if(t>0)            {                j=j+k+1;                if(i==j)                    j++;            }            else            {                i=i+k+1;                if(i==j)                    i++;            }            k=0;        }    }    i=min(i,j);    return i;}

最大表示法:

int GetBig(char *x){    int i = 0, j = 1, k;    while(i < n && j < n)    {        while(x[i+k] == x[j+k] && k < n) k++;        if (k == n)  //这个意思就是以i开头的和以j开头的字符串相同        {            int len = abs(i - j);  //len的长度就是循环节            return n - len + i;   //取坐标最大的        }        else        {            int t = x[i+k] - x[j+k];            if(t>0)  j+=k+1;            else i+=k+1;            if(i==j) j++;            k = 0;        }    }    if(j >= n) return i;    return j;}
阅读全文
0 0
原创粉丝点击