1 条题解

  • 0
    @ 2004-9-29 11:47:08

    练69.3 整理药名

    解题思路

    按字符位置处理药名:下标0若是字母转大写,其余字母转小写,数字与连字符不变。

    正确性说明

    依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。

    易错点

    不是找第一个字母大写;2-PENICILLIN应为2-penicillin。

    复杂度

    总字符S,时间O(S),空间O(最长药名)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        while (n--) {
            string s;
            cin >> s;
            for (size_t i = 0; i < s.size(); i++) {
                unsigned char c = s[i];
                if (isalpha(c))
                    s[i] = char(i == 0 ? toupper(c) : tolower(c));
            }
            cout << s << "\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    454
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者