Rev 8123 | Rev 12248 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8123 | Rev 11124 | ||
---|---|---|---|
Line 54... | Line 54... | ||
54 | int i1,i2,j,k,t,v; |
54 | int i1,i2,j,k,t,v; |
55 | unsigned char c,d; |
55 | unsigned char c,d; |
56 | 56 | ||
57 | if(items<=0) return -1; |
57 | if(items<=0) return -1; |
58 | k=sufcomp(0,str); |
58 | k=sufcomp(0,str); |
- | 59 | if(k==0) return 0; |
|
59 |
|
60 | if(k>0) return -1; |
60 | j=items-1; k=sufcomp(j,str); |
61 | j=items-1; k=sufcomp(j,str); |
61 | if(k==0) return j; |
62 | if(k==0) return j; |
62 | if(k>0) for(i1=0,i2=j;i2>i1+1;) { |
63 | if(k>0) for(i1=0,i2=j;i2>i1+1;) { |
63 | j=i1+(i2-i1)/2; k=sufcomp(j,str); |
64 | j=i1+(i2-i1)/2; k=sufcomp(j,str); |
64 | if(k==0) return j; |
65 | if(k==0) return j; |
Line 67... | Line 68... | ||
67 | } |
68 | } |
68 | if(k>0 && j>0) j--; |
69 | if(k>0 && j>0) j--; |
69 | backcheck: |
70 | backcheck: |
70 | v=j;for(t=0;t<suf[j].olen && t<sufwordlen |
71 | v=j;for(t=0;t<suf[j].olen && t<sufwordlen |
71 | && suf[j].original[t]==str[sufwordlen-t-1];t++); |
72 | && suf[j].original[t]==str[sufwordlen-t-1];t++); |
- | 73 | if(t<sufminlen) return -1; |
|
72 |
|
74 | if(t>=suf[j].olen) return j; |
73 | for(j--,c=str[sufwordlen-1],d=str[sufwordlen-t]; |
75 | for(j--,c=str[sufwordlen-1],d=str[sufwordlen-t]; |
74 | j>=0 && suf[j].original[0]==c && suf[j].olen>t |
76 | j>=0 && suf[j].original[0]==c && suf[j].olen>t |
75 | && suf[j].original[t-1]==d;j--); |
77 | && suf[j].original[t-1]==d;j--); |
76 | if(j>=0 && suf[j].original[0]==c && |
78 | if(j>=0 && suf[j].original[0]==c && |
77 | strncmp((char*)suf[j].original,(char*)suf[v].original,suf[j].olen)==0) |
79 | strncmp((char*)suf[j].original,(char*)suf[v].original,suf[j].olen)==0) |