Q:单词的长度

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。

注意,若是有标点符号(如连字符,逗号),标点符号算做与之相连的词的一部分。没有被空格间开的符号串,都算做单词。ios

输入
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。
输出
依次输出对应单词的长度,之间以逗号间隔。
样例输入
She was born in 1990-01-02  and  from Beijing city.
样例输出
3,3,4,2,10,3,4,7,5
 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     char s[1001];
 7     int t = 0, a[1001] = { 0 }, m = 0;
 8     gets(s);
 9     int l=strlen(s);
10     for (int i = 0; i <=l ; ++i)
11     {
12         if (s[i] != ' '&&s[i] != '\0')
13         {
14             t++;
15         }
16         else if (s[i - 1] != ' '&&(s[i] == ' '||s[i] == '\0'))
17         {
18             a[m] = t;
19             ++m;
20         }
21         if (s[i] == ' '&&s[i + 1] != ' ')
22         {
23             t = 0;
24         }
25     }
26     int j = 0;
27     cout << a[0];
28     while (a[j+1] != 0)
29     {
30         ++j;
31         cout << "," << a[j];
32     }
33     return 0;
34 }

//注意vs是不支持gets的,其用的是gets_s,但oj上又不支持gets_s;数组

另解spa

 1 #include <string> 
 2 #include <iostream>
 3 using namespace std;
 4 
 5 const int N = 310;
 6 string s[N];  // 存储字符串的每一个单词 
 7 
 8 int main() {
 9     string str;
10     getline(cin, str);  // 不要用cin,由于有空格 
11     int len = 0;  // 数组下标 
12     for (int i = 0; i < str.size(); i++) {
13         if (str[i] != ' ') {  // 若当前字符不是空格 
14             s[len] += str[i];
15         }
16         else if (str[i + 1] != ' ') {  // 若当前字符是空格且当前字符的后面一个字符不是空格 
17             len++;  // 数组下标加一 
18         }
19     }
20     for (int i = 0; i <= len; i++) {
21         cout << s[i].size();
22         if (i < len) cout << ",";  // 英文逗号 
23     }
24 
25     return 0;
26 }
相关文章
相关标签/搜索