万卷网 > 题目详情
题型:组合题
#include <iostream> 
#include <string> 
#include <vector> 
 
using namespace std; 

int f(const string &s, const string &t) 
{ 
    int n = s.length(), m = t.length(); 

    vector<int> shift(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 可见字符组成,完成下面的判断题和单选题:

(1).

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

A.

 O(n + m)

B.

O(n log m)

C.

O(m log n)

D.

 O(nm)

(2).

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

A.正确 B.错误
(3).

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

A.

a.find(b)

B.

a.rfind(b)

C.

a.substr(b)

D.

a.compare(b)

(4).

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

A.正确 B.错误
(5).

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

A.

9

B.

10

C.

11

D.

12

(6).

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

A.正确 B.错误
更新时间:2022-12-06 18:02:54 |
【知识点】 CCF非专业级别软件能力认证CSP-S/提高级

相似题推荐

简答题

T4员工招聘

2026-04-17
简答题

T1社团招新

2026-04-17
简答题

T2道路修复

2026-04-17
简答题

T3谐音替换

2026-04-16
单选题

对一个大小为16(下标0-15)的数组构建满线段树,查询区间[3,11]时,最少需要访问多少个树结点(包括路径上的父结点和完全包含在查询区间内的结点)?

A.

7

B.

8

C.

9

D.

10

2025-10-17
公众号
客服 反馈
顶部