刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

反转递增串

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

编写一段程序,输入一个n(2≤n≤1000)位正整数,将其中所有递增数字子串进行反转。

例如,正整数12387645包含两个递增数字子串1238和45,将这两部分进行反转,得到最终的83217654。

输入描述:

输入一个n(2≤n≤1000)位正整数

输出描述:

输出一行,为将输入中所有递增数字子串进行反转的结果


输入样例1:

12387645

输出样例1:

83217654


输入样例2:

87654321

输出样例2:

87654321

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonn = int(input())s = str(n)res = ''inc_num = ''for i in range(len(s)):if i == 0 or s[i] > s[i-1]:inc_num += s[i]else:res += inc_num[::-1] + s[i]inc_num = ''res += inc_num[::-1]print(res)```

解析:

【喵呜刷题小喵解析】:

本题要求将输入的正整数中的递增数字子串进行反转。我们可以遍历输入的每一位数字,判断当前位与前一位的大小关系,从而确定是否开始一个新的递增数字子串。

具体步骤如下:

1. 首先,将输入的整数转换为字符串,方便后续处理。
2. 初始化一个空字符串`res`用于存储最终结果,以及一个空字符串`inc_num`用于存储当前递增数字子串。
3. 遍历输入的每一位数字,如果当前位大于前一位,则将当前位加入`inc_num`中;否则,将`inc_num`反转并加入到`res`中,然后将当前位加入`res`和`inc_num`中。
4. 最后,将剩余的`inc_num`反转并加入到`res`中。
5. 输出`res`即可。

以上算法的时间复杂度为O(n),其中n为输入整数的位数。
创作类型:
原创

本文链接:反转递增串 时间限制:1s 内存限制:128mb (注:input()括号中不允许添加任何提示语)

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share