1 条题解

  • 0
    @ 2026-6-19 10:30:39

    📝 题目大意

    给定一个由小写英文字母组成的字符串 SS(长度 1S1001 \le |S| \le 100),要求删除其中所有的元音字母 aeiou,输出剩下的字符组成的字符串。题目保证 SS 中至少有一个非元音字符。

    💡 解题思路

    1. 题目分析:字符串长度最多 100100,数据规模极小,直接模拟即可。元音字母只有固定的五个小写字母,无需考虑大写或其它字符。
    2. 算法推导
      • 读入字符串 SS,用一个空字符串 result 存放结果。
      • 遍历 SS 中的每个字符 cc
        • cc 不是 aeiou 中的任意一个,则将 cc 追加到 result 末尾。
      • 最后输出 result
    3. 边界与细节
      • 输入全为元音字母的情况不会出现(题目保证至少有一个非元音字符),因此无需担心输出空串。
      • 注意判断条件必须用 &&(逻辑与)连接五个不等比较,而非 ||(逻辑或),否则会误删所有字符。

    ⏱️ 复杂度分析

    • 时间复杂度O(S)O(|S|),只需遍历字符串一次。
    • 空间复杂度O(S)O(|S|),需要额外存储结果字符串。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        string s;
        cin >> s;
        string result = "";           // 存放删除元音后的结果
        for (char c : s) {
            // 只保留非元音字母:a, e, i, o, u 以外的字符
            if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u') {
                result += c;
            }
        }
        cout << result << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    739
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者