top1编程
← 返回题目
题解

【基础】求英文句子中的最长单词

1 条题解

  • 0
    @ 2026-7-30 1:35:03

    解题思路

    逐字读取句子,遇到空格结束当前单词,并保留最先出现的最长单词。

    参考代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string s, w, ans;
        getline(cin, s);
        for (int i = 0; i <= (int)s.size(); i++) {
            if (i < (int)s.size() && s[i] != ' ') {
                // 把当前单词的字母逐个放进w中。
                w += s[i];
            } else {
                // 单词结束时,如果更长,就更新答案。
                if (w.size() > ans.size()) ans = w;
                w = "";
            }
        }
        // 使用大于而不是大于等于,能保留最先出现的最长单词。
        cout << ans;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1