问题描述
一个英文句子(长度不超过 255 ),只含有字母和空格,输出最长的一个单词。如有多个长度相同的单词,则输出最前面的一个。
输入
一个字符串。
输出
输出最长的单词。
样例
输入
in which four coins
输出
which
C++
#include <iostream>
#include <string>
using namespace std;
string findLongestWord(const string& sentence) {
string longestWord = "";
string currentWord = "";
for (char c : sentence) {
if (c == ' ') {
if (currentWord.length() > longestWord.length()) {
longestWord = currentWord;
}
currentWord = "";
} else {
currentWord += c;
}
}
if (currentWord.length() > longestWord.length()) {
longestWord = currentWord;
}
return longestWord;
}
int main() {
string sentence;
getline(cin, sentence);
string longestWord = findLongestWord(sentence);
cout << longestWord << endl;
return 0;
}
当需要找到给定句子中最长的单词时,我们可以遍历整个句子并将其分割成单词。我们可以使用一个字符串变量 currentWord
来保存当前正在构建的单词,然后遍历句子中的每个字符。
对于每个字符,如果它是一个空格,说明当前单词已经结束,我们将检查当前单词的长度是否大于之前找到的最长单词的长度。如果是,我们将当前单词赋值给 longestWord
变量。然后,我们将 currentWord
重置为空字符串,为下一个单词的构建做准备。如果字符不是空格,我们将其添加到 currentWord
变量中,继续构建当前单词。
当我们遍历完整个句子后,最后一个单词可能没有遇到空格而结束,因此我们需要再次检查 currentWord
的长度是否大于 longestWord
的长度,并更新 longestWord
。
最后,我们返回找到的最长单词 longestWord
。
在 main
函数中,我们首先读取输入的句子,并将其保存在字符串变量 sentence
中。然后,我们调用 findLongestWord
函数,将 sentence
作为参数传递给它。找到的最长单词将保存在变量 longestWord
中,并输出到标准输出流中。
希望这样的解释对您有帮助。如果您对代码或解释有任何疑问,请随时提问。