题解
【基础】找最长单词
1 条题解
-
0
解题思路
题目要求从一串单词中找到最长的、包含字母 a 的单词。
输入以句号结尾,单词之间用空格隔开(可能有多个空格)。
思路:
- 用 cin 逐单词读取,它会自动跳过空格
- 每个单词末尾如果有句号就删掉
- 检查单词里有没有字母 a(大小写都算)
- 如果有 a 并且比当前最长的还长,就记下来
- 最后输出结果,如果没有符合条件的就输出 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