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

简答题

数山峰

某地质勘探队正在研究一条山脉的 N 个连续山峰,山峰编号为 1 到 N。每个山峰的高度状态用字符串 S 表示:# 表示高峰,. 表示低谷。

地质学家需要统计存在多少山峰编号 i(1≤i≤N - 2)满足以下特殊地形特征:山峰 i 是高峰;山峰 i+1 是低谷;山峰 i+2 是高峰。即寻找所有满足“高峰-低谷-高峰”模式的连续三个山峰组的起始位置数量。

时间限制:1000ms,内存限制:256MB

输入格式

第一行:整数 N(山峰数量);

第二行:长度为 N 的字符串 S(山峰高度状态)。

输出格式

满足条件的山峰编号 i 的个数。


输入样例#1

6
#.##.#

输出样例#1

2

输入样例#2

1
#

输出样例#2

0

输入样例#3

9
##.#.#.##

输出样例#3

3

数据范围:

1≤N≤2×105;S 仅包含字符 # 和 . 。

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

答案:

首先,遍历字符串S,当遇到满足条件的子串"#“.”#"时,将计数器加1。为了优化时间复杂度,可以使用两个指针,一个指向当前位置,另一个指向下一个需要比较的位置。具体实现时,使用一个循环来遍历字符串S,判断当前位置的字符以及前后两个位置的字符是否满足条件。如果满足条件,计数器加1。最后返回计数器的值即可。

解析:

本题需要统计满足"高峰-低谷-高峰"模式的连续三个山峰组的起始位置数量。可以使用C语言进行实现。具体思路是遍历字符串S,判断每个位置及其前后两个位置是否满足条件。如果满足条件,计数器加1。为了优化时间复杂度,可以使用两个指针来减少不必要的比较操作。最终返回计数器的值即可。注意处理字符串边界的情况,当遍历到字符串末尾时,需要特殊处理。时间复杂度为O(N),其中N为字符串的长度。

创作类型:
原创

本文链接:数山峰 某地质勘探队正在研究一条山脉的 N 个连续山峰,山峰编号为 1 到 N。每个山峰的高度状态用

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

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

分享考题
share