AcWing 774. 最长单词
原题链接
中等
作者:
华硕
,
2023-12-11 17:06:30
,
所有人可见
,
阅读 36
C++ 代码
str.back() str.pop_back()
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
string str, res;
while(cin >> str)
{
if(str.back() == '.') str.pop_back();//若为'.'则删掉
if(str.size() > res.size())
res = str;
}
cout << res;
}
屎山写法
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
string s;
getline(cin,s);//输入字符串
int j = 0, n[300] = {0}, position[300] = {0};
//j 定位第n个单词 n 保存每个单词的长度 position保存每个单词所处起始位
for(int i = 0; i < s.size(); i++)
{//遍历字符串s
if(s[i]!=' ')
{//非空格情况下,第j个单词长度++
if(s[i] != '.')//若不为 '.' 则长度加1
n[j]++;
}
else//若为空格,j++,开始记录下一个单词的长度(n[])和起始位(position[])
{
j++;
position[j]= i+1;
}
}
int max = 0, position1 = 0;//定义最大的单词长度为0,起始位下标为0;
for(int i = 0; n[i]!=0; i++)
{
if(n[i] > max)
{
max = n[i];//如果长度大于上一个最大长度值,则更换max
position1 = position[i];//且初始位为第i个词的下标
}
}
for(int i = position1;i < position1 + max; i++)//从字符串s 输出该最长单词,输出长度即该单词长度
cout << s[i];
}