还是那位大神~
https://coderbyte.com/results/hyuil:Longest%20Word:Cpp
#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
string LongestWord(string sen) {
// code goes here
string sen2 = "";
for(int i=0;i<sen.length();i++)
{
if(isalpha(sen[i])||sen[i]==' '||'0'<=sen[i]&&sen[i]<='9')
{
sen2.append(sen.substr(i,1));
}
}
char* sench = (char*)sen2.c_str();
string longest = "";
int longestLen = 0;
for(const char* pch=strtok(sench," ");pch;pch=strtok(NULL," "))
{
if(strlen(pch)>longestLen)
{
longest = pch;
longestLen=strlen(pch);
}
}
return longest;
}
int main() {
// keep this function call here
cout << LongestWord(gets(stdin));
return 0;
}
部分库函数说明:
1、isalpha
原型:int isalpha( int ch ) ;
C++使用库 < cctype > (C语言使用 < ctype.h >)
功能:判断字符若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0。
2、append
原型:
1.append (const string& str);
2.append (const string& str, size_t subpos, size_t sublen = npos);
使用库< string >
功能: 在字符串的末尾添加字符
3、substr
原型:string substr (size_t pos = 0, size_t len = npos) const;
使用库:< string >
功能:substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。
4、c_str
原型:const char* c_str() const noexcept;
使用库:< string >
功能:返回当前字符串的首字符地址 ,返回const char*类型
5、strtok
原型:char *strtok(char s[], const char *delim);
使用库:< string >
功能:分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
6、strlen
原型:extern unsigned int strlen(char *s);
使用库: < string>
功能:计算给定字符串的(unsigned int型)长度,不包括’\0’在内