求问string的size玄学错误
查看原帖
求问string的size玄学错误
748239
OIbishop楼主2024/10/23 11:31

这是对的:

inline void kmp (string s1 , string s2)
{
    getnxt (s2);
    int i = 0 , j = 0;
    while (i < (int)s1.size () && j < (int)s2.size ())
    {
        if (j == (int)s2.size () - 1 && s1[i] == s2[j])
            cout << i - j + 1 << "\n" , j = nxt[j];
        else if (j == -1 || s1[i] == s2[j])
            i ++ , j ++;
        else j = nxt[j];
    }
}

这个就错了:

inline void kmp (string s1 , string s2)
{
    getnxt (s2);
    int i = 0 , j = 0;
    while (i < s1.size () && j < s2.size ())
    {
        if (j == s2.size () - 1 && s1[i] == s2[j])
            cout << i - j + 1 << "\n" , j = nxt[j];
        else if (j == -1 || s1[i] == s2[j])
            i ++ , j ++;
        else j = nxt[j];
    }
}
2024/10/23 11:31
加载中...