返回首页 返回题库

分割字符串

C++ 简单 GESP三级真题 #模拟#字符串查找

题目描述

题面描述

小明拿到了段一字符串文本,小明希望用下面的规则分割这个字符串:

  1. 小明从左到右扫描字符串,遇到第一个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这个空格);
  2. 对于上次分割后右侧的字符串,小明继续扫描,第一次遇到连续两个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这两个空格);
  3. 对于上次分割后右侧的字符串,小明继续扫描,第一次遇到连续三个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这三个空格);
  4. 以此类推,小明每分割一次,下一次分割就需要更长的连续空格;直到字符串无法再次分割。

最后输出每次分割的左侧的字符串,以及最后一次分割的右侧字符串。

如果字符串完全无法进行任何一次分割,直接输出其本身。

输入格式

输入一行,一个字符串。

输出格式

输出若干行。每行为分割后的一个字符串,注意依次输出:

第一次分割左侧的字符串,第二次分割左侧的字符串,...,最后一次分割左侧的字符串,最后一次分割右侧的字符串。

样例1

输入:

sdfd 55 55   99312

输出:

sdfd
55 55
99312

样例解释1

1. 第一次分割将字符串分割为 sdfd 和 55 55 99312;

2. 第二次分割将字符串分割为 55 55 和 99312;

对于第二次分割,注意 55 和 55 之间虽然有空格,但是第二次分割需要连续两个空格才行;

另外,55 55 和 99312 之间有三个空格,第二次分割只需要两个,所以会分割为 55 55 和 99312,也就是右侧会留下一个空格;因为只留下了一个空格,所以不再满足第三次分割要求。

样例2

输入:

AbCd   999

输出:

AbCd

999

样例解释2

1. 第一次分割将字符串分割为 AbCd 和 999;

2. 第二次分割将字符串分割为空字符串和 999;

由于 AbCd 和 999 之间有三个空格,第一次分割消耗掉一个,因此还能进行第二次分割,这个时候会分割出空字符串,因此输出中会输出一个空行(不能省略)。

数据范围

字符串长度不超过1000,字符串中只包含大写字母、小写字母,数字,或空格,且输入字符串不会以空格结尾。

特别强调:输入仅一行,但可能包含若干空格



时间与内存限制

时间限制:1.0 s

内存限制:512.0 MB

💡 查看提示(先自己想一想再看)
考察知识点:字符串的查找、字符串的截取与拼接、循环模拟过程;常见易错点:使用getline正确读取带空格的整行字符串,分割时准确计算剩余字符串的起始位置(跳过k个空格),空行不能省略输出,分割次数k需从1开始递增直到无法分割。
⚙ 开始做这道题 0 人做过 · 2 收藏 · 19 浏览

讨论(0)