网站seo具体怎么做关键词排名的工具
单词的长度
题目描述
输入一行单词序列,相邻单词之间由 1 1 1 个或多个空格间隔,请对应地计算各个单词的长度。
注意:如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
输入格式
一行单词序列,最少 1 1 1 个单词,最多 300 300 300 个单词,单词之间用至少 1 1 1 个空格间隔。单词序列总长度不超过 1000 1000 1000。
输出格式
依次输出对应单词的长度,之间以逗号间隔。
样例 #1
样例输入 #1
She was born in 1990-01-02 and from Beijing city.
样例输出 #1
3,3,4,2,10,3,4,7,5
方法1
解题思路:
本题要求我们计算一行单词序列中每个单词的长度,并以逗号分隔输出。我们可以按照以下步骤解决:
- 读取一行单词序列。
- 使用字符串流(istringstream)将单词序列分割为单个单词。
- 遍历每个单词,计算其长度,并输出长度值。
- 在输出长度值之间以逗号分隔,注意最后一个长度值后不需要逗号。
C++代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;int main() {string line;getline(cin, line);istringstream iss(line);string word;int wordCount = 0;while (iss >> word) {if (wordCount > 0) {cout << ",";}cout << word.length();wordCount++;}cout << endl;return 0;
}
代码解释:
1 . 首先,我们使用getline
函数读取一行单词序列,并将其存储在字符串line
中。
2 . 接下来,我们创建一个字符串流对象iss
,并将line
传递给它。这样,我们就可以使用iss
来分割单词序列。
3 . 然后,我们定义一个字符串变量word
用于存储每个单词,以及一个整型变量wordCount
用于记录已处理的单词数量。
4 . 我们使用while
循环和iss >> word
语句从字符串流中读取单词。每次读取一个单词,直到读取完所有单词为止。
5 . 在循环内部,我们首先判断wordCount
是否大于0。如果大于0,说明当前单词不是第一个单词,我们输出一个逗号,
作为分隔符。
6 . 然后,我们使用word.length()
计算当前单词的长度,并将其输出。
7 . 将wordCount
加1,表示已经处理了一个单词。
8 . 循环结束后,我们输出一个换行符,以便结果在新的一行显示。
复杂度分析:
- 时间复杂度:O(n),其中n为单词序列的总长度。我们需要遍历整个单词序列一次。
- 空间复杂度:O(n),其中n为单词序列的总长度。我们需要使用字符串流来存储单词序列,以及临时存储每个单词。
输入输出样例:
输入:
She was born in 1990-01-02 and from Beijing city.
输出:
3,3,4,2,10,3,4,7,5
该解决方案与之前的解决方案类似,只是将布尔变量first
替换为整型变量wordCount
来判断是否为第一个单词。通过使用wordCount
,我们可以避免使用布尔值,而是通过单词数量来判断是否需要输出逗号分隔符。
方法2
解题思路:
本题要求我们计算一行单词序列中每个单词的长度,并以逗号分隔输出。我们可以按照以下步骤解决:
- 使用
cin
直接读取单词,以空格为分隔符。 - 对于每个读取到的单词,计算其长度,并输出长度值。
- 在输出长度值之间以逗号分隔,注意最后一个长度值后不需要逗号。
C++代码:
#include <iostream>
#include <string>
using namespace std;int main() {string word;int wordCount = 0;while (cin >> word) {if (wordCount > 0) {cout << ",";}cout << word.length();wordCount++;}cout << endl;return 0;
}
代码解释:
1 . 首先,我们定义一个字符串变量 word
用于存储每个单词,以及一个整型变量 wordCount
用于记录已处理的单词数量。
2 . 我们使用 while
循环和 cin >> word
语句直接读取单词。每次读取一个单词,以空格为分隔符,直到读取完所有单词为止。
3 . 在循环内部,我们首先判断 wordCount
是否大于0。如果大于0,说明当前单词不是第一个单词,我们输出一个逗号 ,
作为分隔符。
4 . 然后,我们使用 word.length()
计算当前单词的长度,并将其输出。
5 . 将 wordCount
加1,表示已经处理了一个单词。
6 . 循环结束后,我们输出一个换行符,以便结果在新的一行显示。
复杂度分析:
- 时间复杂度:O(n),其中n为单词序列的总长度。我们需要遍历整个单词序列一次。
- 空间复杂度:O(1)。我们只需要常数级别的额外空间来存储每个单词和单词数量。
输入输出样例:
输入:
She was born in 1990-01-02 and from Beijing city.
输出:
3,3,4,2,10,3,4,7,5
该解决方案直接使用 cin
读取单词,避免了使用字符串流分割单词的过程。通过 cin >> word
,我们可以方便地读取以空格分隔的单词,并计算每个单词的长度。与之前的解决方案相比,该方法更加简洁直观。
需要注意的是,由于 cin
以空格为分隔符,所以连字符、逗号等标点符号会被视为单词的一部分,这符合题目要求。
如果还有任何问题或需要进一步的解释,请随时告诉我。