题目描述
编写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。
资源限制:
内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
样例输入
I am a student
样例输出
student
思路:通过getline()函数获取行字符串,然后将行字符串存入数组,每个单词或字符占用1内存空间。将数组首个字符的长度定为最长字符,然后通过遍历数组,计算每个内存中字符的长度,如果比初始最长长度大,则将其替换,直至循环结束,输出最长字符(单词)。
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int main() {
string s;
getline(cin, s); //输入一行字符串
vector<string> a; //定义一个string类型的动态数组
stringstream ss(s); //创建一个stringstream对象ss
string word;
while (ss >> word){ //从stringstream中提取一个单词将其储存到word中
a.push_back(word); //vector标准库中的函数,将元素加到数组里边
}
int len = a[0].length();
int index = 0;
for (int i = 0; i < a.size(); i++) { //遍历数组
if (a[i].length() > len) {
len = a[i].length();
index = i;
}
}
cout << a[index];
return 0;
}
总结:
- 求字符串长度用size()函数或者length()函数,要加上头文件<string>。
- 注意区分strlen()。在处理C风格的字符串时,常用strlen(),它是一个全局函数,返回的是type_t类型的值,可用于(char*)类型。头文件常用<cstring>。size()和length()是std::string的成员函数,只能用于std::string对象,且两者返回的是std::string::size_type类型的值。
-
stringstream是C++标准库中的一个类,用于在内存中操作字符串流。