問題描述:從串S中第index個字符起求出首次與與字符串S1相同的子串的起始位置。 算法思路:從第index 個字符開始掃描串S,當其元素值與S1的第一個字符相等時,判定他們之後的元素值是否依次相同,直到S1結束為止。若都相同則返回,否則繼續上述過程直到S掃描完為止。
//算法1
int part(SqString &S,SqString &S1,int index)
{
int i=index,j=0;
while(i<S.length&&j<S1.length)
{
if(S.data[i]==S1.data[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=S1.length)
return (i-S1.length);
else
return -1;
}
//算法2
int Part(SqString S,SqString S1,int index)
{
int i,j,k;
int n=S.length;
int m=S1.length;
for(i=index;i<n-m;i++)
{
for(j=0,k=i;j<m&&S1.data[j]==S.data[k];j++,k++);
if(j==m)
return i;
}
return -1;
}