首页 / 客观题库

80694 - KMP算法5

字符串算法

题目(材料题)

1  #include <iostream>

2  #include <string>

3  #include <vector>

4

5  using namespace std;

6

7  int f(const string & s, const string & t)

8  {

9      int n = s.length(), m = t.length();

10

11     vector<int> shift(128, m + 1);

12

13     int i, j;

14

15     for (j = 0; j < m; j++)

16         shift[t[j]] = m - j;

17

18     for (i = 0; i <= n - m; i += shift[s[i + m]]) {

19         j = 0;

20         while (j < m && s[i + j] == t[j]) j++;

21         if (j == m) return i;

22

    }

23

24     return -1;

25 }

26

27 int main()

28 {

29     string a, b;

30     cin >> a >> b;

31     cout << f(a, b) << endl;

32     return 0;

33 }

 

假设输入字符串由 ASCII 可见字符组成,完成下面的判断题和单选题:

||

当输入为“abcde fg”时,输出为-1。

正确

错误

当输入为“abbababbbab abab”时,输出为 4。

正确

错误

当输入为“GoodLuckCsp2022 22”时,第 20 行的“j++”语句执行次数为 2。

正确

错误

( 单选 )

该算法最坏情况下的时间复杂度为( )

A O(n+m)

B O(nlogm)

C O(mlogn)

D O(nm)

( 单选 )

f(a, b) 与下列( )语句的功能最类似

A a.find(b)

B a.rfind(b)

C a.substr(b)

D a.compare(b)

( 单选 )

当输入为“baaabaaabaaabaaaa aaaa”,第 20 行的“j++”语句执行次数为

A 9

B 10

C 11

D 12

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36