news 2026/3/10 8:04:58

leetcode 2147. 分隔长廊的方案数 困难

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 2147. 分隔长廊的方案数 困难

在一个图书馆的长廊里,有一些座位和装饰植物排成一列。给你一个下标从0开始,长度为n的字符串corridor,它包含字母'S''P',其中每个'S'表示一个座位,每个'P'表示一株植物。

在下标0的左边和下标n - 1的右边已经分别各放了一个屏风。你还需要额外放置一些屏风。每一个位置i - 1i之间(1 <= i <= n - 1),至多能放一个屏风。

请你将走廊用屏风划分为若干段,且每一段内都恰好有两个座位,而每一段内植物的数目没有要求。可能有多种划分方案,如果两个方案中有任何一个屏风的位置不同,那么它们被视为不同方案。

请你返回划分走廊的方案数。由于答案可能很大,请你返回它对109 + 7取余的结果。如果没有任何方案,请返回0

示例 1:

输入:corridor = "SSPPSPS"输出:3解释:总共有 3 种不同分隔走廊的方案。 上图中黑色的竖线表示已经放置好的屏风。 上图每种方案中,每一段都恰好有两个座位。

示例 2:

输入:corridor = "PPSPSP"输出:1解释:只有 1 种分隔走廊的方案,就是不放置任何屏风。 放置任何的屏风都会导致有一段无法恰好有 2 个座位。

示例 3:

输入:corridor = "S"输出:0解释:没有任何方案,因为总是有一段无法恰好有 2 个座位。

提示:

  • n == corridor.length
  • 1 <= n <= 10^5
  • corridor[i]要么是'S',要么是'P'

分析:由于题目已经限定了,划分出来的每一段必须要有两个座位。可以遍历整个字符串,当出现过两个 'S' 之后,再统计之后出现过多少个 'P',只有在出现过两个座位后,出现的植物之间才可以放置屏风。这里连续出现的 'P' 的个数,就是这一段可以放置的屏风数量。之后一直这样统计,直到末尾,把每一段屏风数量相乘,就能得到答案。

注意如果座位的数量是奇数,则无法放置任何屏风。

int numberOfWays(char* corridor) { long long ans=1,mod=1e9+7; int cnt_s=0,cnt_p=0,cnt=0; int num[100010]={0}; for(int i=0;corridor[i];++i) { if(cnt_s==2) { if(corridor[i]=='S')num[cnt++]=cnt_p+1,cnt_p=0,cnt_s=1; else if(corridor[i]=='P')cnt_p+=1; } else if(corridor[i]=='S')cnt_s++; } if(cnt==0) { if(cnt_s==2)return 1; else return 0; } else { if(cnt_s==1)return 0; else for(int i=0;i<cnt;++i) ans=ans*num[i]%mod; } return ans; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 1:42:49

2025年夸克网盘不限速教程:速度可达70MB/s实测有效

2025年12月最新今天教大家一招能解决夸克网盘限制的在线工具。这个工具也是完全免费使用的。下面让大家看看我用这个工具的下载速度咋样。地址获取&#xff1a;放在这里了&#xff0c;可以直接获取 这个速度还是不错的把。对于平常不怎么下载的用户还是很友好的。下面开始今天的…

作者头像 李华
网站建设 2026/3/4 4:57:11

调试功能的说明-–-behaviac

原文 behaviac提供了离线调试以及连调功能。 离线调试 离线调试功能是指在编辑器里加载运行时产生的 _behaviac_$_.log 文件&#xff0c;如下图&#xff0c;可以加载 _behaviac_$_.log 文件&#xff1a; _behaviac_$_.log 是运行游戏时产生的log文件。一般都是产生在exe所在…

作者头像 李华
网站建设 2026/3/10 10:24:00

unity3d scene窗口选中物体, 在 hierarchy高光显示

在 Unity 中实现 “Scene 窗口选中物体时 Hierarchy 面板高光显示”&#xff0c;核心思路是监听 Scene 窗口的选择事件&#xff0c;并通过 Unity 的EditorGUIUtility和EditorWindow相关 API 主动高亮 Hierarchy 面板中对应的物体条目。以下是完整的实现方案&#xff1a;using U…

作者头像 李华
网站建设 2026/3/9 3:14:05

FOC开发工具学习

FOC开发工具使用 ST 提供的 FOC 开发套件——“X-CUBE-MCSDK”&#xff0c;来帮助我们生成 FOC 控制代码 。 X-CUBE-MCSDK&#xff1a;ST 推出的电机控制软件开发套件。其中包括永磁同步电机&#xff08;PMSM&#xff09;固件库&#xff08;FOC 控制&#xff09;以及 STM32 电机…

作者头像 李华
网站建设 2026/3/7 0:47:28

HyperLPR3 车牌识别(python3)

HyperLPR已经更新到了v3的版本&#xff0c;该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目&#xff0c;最新的版本的源码可从github中提取&#xff1a;https://github.com/szad670401/HyperLPR一、安装扩展 python -m pip install hyperlpr3 https://pypi.tuna…

作者头像 李华
网站建设 2026/3/9 12:01:40

234回文链表

2025_12_14 链表简单&#xff08;虽然是简单但是链表的我总是卡呢&#xff09; 234回文链表 思路&#xff1a;我想到的是递归或者倒转一半或者栈&#xff0c;再遍历检查回文&#xff0c;但是限制了空间就只能倒转一半&#xff0c;感觉写起来好麻烦www感觉写的不是很优雅&#x…

作者头像 李华