帮忙看看这个代码为什么会超时,有没有什么修改办法(一个字符串在另一个字符串中出现的次数)

#include
#include

using namespace std;

int main()
{
char str1[100];
char str2[100];
while (1)
{
cin>>str1;
cin>>str2;
int a=strlen(str1);
int b=strlen(str2);
int j,i,count=0;
for(j=0;j<a;j++)
{
if(str2[0]==str1[j])
{
i=0;
while(str2[i]==str1[j]&&i<b)
{
i++;
j++;
}
if(i==b)
{
count++;
j--;
}
}
}
cout<<count<<endl;
}
return 0;
}

楼主不妨看看KMP算法
http://blog.csdn.net/joylnwang/article/details/6778316

    TCHAR strS[100] = _T("aaabvabcabcaabccabc");
    TCHAR strD[100] = _T("abc");
    int nLenS = _tcslen(strS);
    int nLenD = _tcslen(strD);

    int nCount = 0;
    int i = 0, j = 0, k = 0;
    while(k < nLenS)
    {
        if (strS[k] == strD[j])
        {
            if (nLenD-1 == j)
            {
                nCount++;
                i += nLenD;
                j = 0;
                k++;
                continue;
            }
            j++;
            k++;
        }
        else
        {
            i++;
            k = i;
            j = 0;
        }

    }