最近小编在刷NOI openjudge,看到了这样一道题:
24:单词的长度
描述
输入一行单词序列,相邻单词之间由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
这道题我们可以用C++/Python做出来,下面是我做的。
C++:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char s[1000];
int cnt = 0;
gets(s);//直接输入(带空格)
s[strlen(s)] = ' ';
for(int i = 0;i < strlen(s);i++){
if(s[i] != ' ') cnt++;//如果不是空格,则说明这个单词还有新字母,长度增加
else{
//遇到空格
if(s[i + 1] != ' '){
//判断后面的字符是不是空格,避免输出多余的0
if(i == strlen(s) - 1) cout << cnt;//是最后一个单词的话输出不带逗号的单词长度
else cout << cnt << ',';//否则输出带有逗号的长度
cnt = 0;
}
}
}
return 0;
}
Python:
a = input().split()#以空格分隔输入的句子,存成list形式。
for i in range(len(a)):#遍历列表
if i != len(a) - 1:#如果不是最后一个单词,输出当前单词的长度加一个逗号
print(len(a[i]),end=',')
else:#如果是最后一个单词,输出它的长度不加逗号
print(len(a[i]))