openjudge7549 单词的长度
时空限制 1000ms/64MB
描述
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。
注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
输入
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。
输出
依次输出对应单词的长度,之间以逗号间隔。
样例输入
She was born in 1990-01-02 and from Beijing city.
样例输出
3,3,4,2,10,3,4,7,5
代码
法一:逐个单词
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
int first=0;
while (cin>>s){
first++;
if (first!=1) cout<<",";
cout<<s.size();
}
cout<<endl;
return 0;
}
法二:逐个字符
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
getline(cin,s);
s += " ";
bool IN=false; //是否在单词内
int k=0,cnt=0;
for (int i=0; i<s.size(); i++)
if (s[i]==' '){ //出现空格,s[i]在单词外
if (IN && !cnt) { cout<<k; cnt++; } //第一个单词
else if (IN) cout<<","<<k; //其它单词
IN = false; //标记置零
k = 0; //单词长度置零
}
else IN=true,k++; //非空格,s[i]在单词内
cout<<endl;
return 0;
}