当前位置: 首页 > news >正文

B2120 单词的长度

单词的长度

题目描述

输入一行单词序列,相邻单词之间由 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

解题思路:

本题要求我们计算一行单词序列中每个单词的长度,并以逗号分隔输出。我们可以按照以下步骤解决:

  1. 读取一行单词序列。
  2. 使用字符串流(istringstream)将单词序列分割为单个单词。
  3. 遍历每个单词,计算其长度,并输出长度值。
  4. 在输出长度值之间以逗号分隔,注意最后一个长度值后不需要逗号。

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

解题思路:

本题要求我们计算一行单词序列中每个单词的长度,并以逗号分隔输出。我们可以按照以下步骤解决:

  1. 使用 cin 直接读取单词,以空格为分隔符。
  2. 对于每个读取到的单词,计算其长度,并输出长度值。
  3. 在输出长度值之间以逗号分隔,注意最后一个长度值后不需要逗号。

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 以空格为分隔符,所以连字符、逗号等标点符号会被视为单词的一部分,这符合题目要求。

如果还有任何问题或需要进一步的解释,请随时告诉我。

http://www.lryc.cn/news/355946.html

相关文章:

  • 分布式事务解决方案(最终一致性【可靠消息解决方案】)
  • AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月28日预测第4弹
  • JAVA:深入了解JAVA中的23种设计模式(三)- 行为型模式(下)
  • 微信小程序【WXML】
  • 基于python实现的深度学习的车牌识别系统
  • SQL试题使得每个学生 按照姓名的字⺟顺序依次排列 在对应的⼤洲下⾯
  • kafka3.6.1版本学习
  • 移除链表元素-力扣
  • HTTP请求拦截器链
  • 再创佳绩丨达梦数据库一体机荣获2024数字中国创新大赛·信创赛道总决赛一等奖
  • 数据分析之统计学基础
  • Web3 游戏周报(5.19 - 5.25)
  • 通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求
  • C语言 | Leetcode C语言题解之第101题对称二叉树
  • TTime:截图翻译/OCR
  • 【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)
  • 四川农业大学Java实训项目圆满收官,汇智知了堂引领学子实践创新
  • JavaScript的当前时间设置及Date的运算
  • 网络安全管理制度
  • 零基础,想做一名网络安全工程师,该怎么学习?
  • 【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型
  • 【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN
  • SQLite查询优化
  • UE4编辑器End键Actor贴近地面
  • 2024儿科常用心理评估量表汇总,附详细操作步骤与评定标准
  • Python 脚本化 Git 操作:简单、高效、无压力
  • 手搓顺序表(C语言)
  • 一文搞懂oracle事务提交以及脏数据落盘的原则
  • OceanBase:列存储
  • Rust:WIndows 环境下交叉编译 Linux 平台程序