top1编程
← 返回题目
题解

【基础】找最长单词

1 条题解

  • 0
    @ 2026-7-31 4:51:20

    解题思路

    题目要求从一串单词中找到最长的、包含字母 a 的单词。

    输入以句号结尾,单词之间用空格隔开(可能有多个空格)。

    思路:

    1. 用 cin 逐单词读取,它会自动跳过空格
    2. 每个单词末尾如果有句号就删掉
    3. 检查单词里有没有字母 a(大小写都算)
    4. 如果有 a 并且比当前最长的还长,就记下来
    5. 最后输出结果,如果没有符合条件的就输出 NO

    参考代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string s, ans;
        int maxLen = 0;
        bool ok = false;
    
        while (cin >> s) {
            // 去掉单词末尾的句号
            if (s.back() == '.') {
                s.pop_back();
            }
            // 检查这个单词里有没有字母 a(大小写都算)
            bool has = false;
            for (int i = 0; i < s.size(); i++) {
                if (s[i] == 'a' || s[i] == 'A') {
                    has = true;
                    break;
                }
            }
            // 如果包含 a 并且比当前最长的还长,就更新答案
            if (has && s.size() > maxLen) {
                ans = s;
                maxLen = s.size();
                ok = true;
            }
        }
    
        if (ok) {
            cout << ans << endl;
        } else {
            cout << "NO" << endl;
        }
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N×L),N 为单词数,L 为单词平均长度
    • 空间复杂度:O(1)
    • 1