#12158. 珅泽教育CSP-J第一轮模拟考第二十二套 第 17 题

珅泽教育CSP-J第一轮模拟考第二十二套 第 17 题

二、阅读程序(程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题 2 分,选择题 3 分,共计 40 分)

程序(1)

#include <iostream>
#include <cstring>
using namespace std;
string s, t;
string a, b;
int main() {
    getline(cin, s);
    getline(cin, a);
    getline(cin, b);
    for (int i = 0; i < s.size(); i++) {
        bool flag = true;
        if (i + a.size() <= s.size()) {
            for (int j = 0; j < a.size(); j++) {
                char p = s[i + j], q = a[j];
                if ('a' <= p && p <= 'z') p = p - 'a' + 'A';
                if ('a' <= q && q <= 'z') q = q - 'a' + 'A';
                if (p != q)
                    flag = false;
            }
        } else
            flag = false;

        if (flag == true) {
            t += b;
            i += a.size() - 1;
        } else
            t += s[i];
    }
    cout << t << endl;
    return 0;
}

保证输入的三行字符串长度均不超过 10310^3,且每个字符串均由 ASCII 可见字符或空格组成且非空。

  1. 每次调用 s.size() 的复杂度是 O(1)O(1),但若把 s.size() 替换成 s.length(),调用的复杂度将会变成 O(l)O(l),其中 lls 当前的长度。这是因为 s.length() 作为 strlen() 函数的 string 版本,会每次重新计算 s 最后一个元素的位置。( )

{{ select(1) }}

  • 正确
  • 错误