题解
最大的单词
1 条题解
-
0
解题思路
找出字典序最大的单词,就像“打擂台”:
- 先读入第 1 个单词,把它当作目前的最大值
best; - 之后每读入一个单词
w,就和best比一比,如果w更大,就更新best; - 所有单词读完后,
best就是最大的那个。
什么是“字典序”?就像查英文字典:先比第 1 个字母,第 1 个字母大的就大;第 1 个字母相同,再比第 2 个字母……依次类推。C++ 里字符串直接用
>比较,规则就是字典序,不用我们手工比较。用样例验证:依次读入 lesson、table、pen、zool、cup,擂台上一路比下来,最后
zool最大,输出zool,和样例一致。参考代码
// P4552 最大的单词:找出字典序最大的单词 #include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; string best; // 记录目前最大的单词 for (int i = 0; i < n; i++) { string w; cin >> w; // 第一个单词先存下,之后每次都和当前最大比较 if (i == 0 || w > best) best = w; } cout << best << endl; return 0; }复杂度分析
- 要读入并比较 n 个单词,每个单词长度不超过 50,比较一次字符串最坏 O(50)。
- 总时间复杂度 O(n × 50),空间复杂度 O(1)(只用一个变量存最大单词)。
- 先读入第 1 个单词,把它当作目前的最大值
- 1