#include<iostream> #include

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int f(const string &s, const string &t)
{
    int n = s.length(), m = t.length();
    vectorshift(128, m + 1);
    int i, j;
    for (j = 0; j < m; j++)
        shift[t[j]] = m - j;
    for (i = 0; i <= n - m; i += shift[s[i + m]]) {
        j = 0;
        while (j < m && s[i + j] == t[j]) j++;
        if (j == m) return i;
    }
    return -1;
}
int main()
{
    string a, b;
    cin >> a >> b;
    cout << f(a, b) << endl;
    return 0;
}

假设输入字符串由 ASCII 可见字符组成,该算法最坏情况下的时间复杂度为( )。

答案
D

题目信息

题号:1601
题型:单选题
难度:普通