怎么在一个英文句子中找出含有某个元素,且最长的单词(长度相同就输出前面的)
比如 :you are so nice
输出含有a的最长单词
以空格为分割遍历每个单词,在扫描到空格或EOF时对前一个单词做判断,如果该单词含有a则记录其起始位置与长度,全部扫描完毕后直接用起始位置和长度输出该单词即可,复杂度为O(n)
if(s[i]=='a')或strcmp(s[i],'a');
判断有没有a
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <cstdio>
using namespace std;
bool existchar(string s, char a)
{
int sLen = s.length();
for (int i = 0; i < sLen; i++)
{
if (s[i] == a)
{
return true;
}
}
return false;
}
int main()
{
string s;
getline(cin, s);
int sLen = s.length();
int maxLen = 0, cl;
string maxStr = "", cs;
for (int i = 0; i < sLen; i++)
{
if (s[i] != ' ')
{
cs += s[i];
}
else
{
if (existchar(cs, 'a'))
{
cl = cs.length();
if (cl > maxLen)
{
maxLen = cl;
maxStr = cs;
}
}
cs = "";
cl = 0;
}
}
if (existchar(cs, 'a'))
{
cl = cs.length();
if (cl > maxLen)
{
maxLen = cl;
maxStr = cs;
}
}
cout<<maxStr<<endl;
return 0;
}