【小韦同学@题解-单词的长度】
题目:
描述
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。
注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
输入
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。
输出
依次输出对应单词的长度,之间以逗号间隔。
输入样例1
She was born in 1990-01-02 and from Beijing city.
输出样例1
3,3,4,2,10,3,4,7,5
来源
http://shenben.club/problem?id=129
题解:
/*********************************************************************
* 题目:单词的长度
* 描述:输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计
算各个单词的长度。
注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连
的词的一部分。没有被空格间开的符号串,都算作单词。
* 作者:小韦同学
* 邮箱:weichangying_wcy@163.com
* 题解:
思路:1)数据结构:采用字符串数组s来存储依次单词
2)步骤:
(1)枚举字符串,若当前字符不是空格时,将单词依次存到字符串
数组s中,否则转到(2)。
(2)若当前字符是空格,且当前字符的后面一个字符不是空格时,字
符数组s下标len加一。
注意:1° (2)要判断当前字符的后面一个字符是因为若后面还是空格,则下
标不能加一,因为加一之后就会有一个空的单词字符串产生。
2° 字符串数组的下标为0~len。
*********************************************************************/
#include <string>
#include <iostream>
using namespace std;
const int N = 310;
string s[N]; // 存储字符串的每个单词
int main() {
string str;
getline(cin, str); // 不要用cin,因为有空格
int len = 0; // 数组下标
for (int i = 0; i < str.size(); i++) {
if (str[i] != ' ') { // 若当前字符不是空格
s[len] += str[i];
}
else if (str[i + 1] != ' '){ // 若当前字符是空格且当前字符的后面一个字符不是空格
len++; // 数组下标加一
}
}
for (int i = 0; i <= len; i++) {
cout << s[i].size();
if (i < len) cout << ","; // 英文逗号
}
return 0;
}
我是小韦同学,企者不立,跨者不行,每天进步一点点。
欢迎大家多多交流,如果发现有错误,请多指正。有疑问的同学也可以留言评论或者发邮件。邮箱:weichangying_wcy@163.com