字符串最后一个单词的长度
题目描述
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
乍一看题很简单,而实际上,就是很简单[哭笑]
这道题只有一个考点,应该就是C++如何输入带有空格的字符串。
输入一般都会这样写:
cin >> str;
但是这样写遇到空格和回车都会停止,本题不能用这样的写法;到这里本题的坑就跳过去了,hahahah~
允许空格的输入可以
getline(cin,str);
or
cin.get(str,5000);
or
cin.getline(a,50);
如果使用cin.get()和cin.getline()输入,那么变量就得定义成char型,因为描述中给出了长度小于5000的条件,所以直接定义一个长度5000的char型数组就行了。
完整版:
#include <iostream>
#include <string>
using namespace std;
class lastLength
{
public:
lastLength() {}
int length(string str)
{
string bit(" ");
for (int i = str.length() - 1; i > 0; i--)
{
if (str[i] == bit[0])
{
return str.length() - i - 1;
}
}
return str.length();
}
};
int main()
{
char str[5000];
cin.get(str, 5000);
lastLength length;
cout << length.length(str) << endl;
return 0;
}
更新了一下,用时3ms。很好奇,那些用了不到1ms的大神们是怎么写的呢??
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char str[5000];
int length,position=0;
char k={' '};
cin.getline(str,5000);
for(int i=0;i<5000;i++)
{
if(str[i]==NULL)
{
length=i;
break;
}
if(str[i]==k)
{
position=i+1;
}
}
cout << length-position;
return 0;
}