news 2026/7/21 23:19:28

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/7/21 21:11:05

C# IO流核心知识点总结

1. 核心概念 - IO流即输入输出流&#xff0c;以水管为形象类比&#xff0c;用于实现文件、内存、网络等介质的数据读写&#xff0c;基类为 System.IO.Stream &#xff08;抽象类&#xff09;。 - 流分为字节流&#xff08;万能流&#xff0c;读写文本、图片、视频等所有文件&a…

作者头像 李华
网站建设 2026/7/21 17:41:56

TCP 通信从原理到代码:用仓库与快递箱的比喻读懂交互逻辑

引言&#xff1a; https://github.com/0voice 在我们日常使用的聊天软件、文件传输工具、网页浏览背后&#xff0c;都藏着网络通信协议的身影&#xff0c;其中 TCP&#xff08;传输控制协议&#xff09;是最核心、最常用的一种。它就像现实世界中一条可靠的 “快递通道”&…

作者头像 李华
网站建设 2026/7/17 2:55:36

基于springboot的课程作业管理系统(11490)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/7/22 6:06:28

智能体开发系统学习实践

智能体开发不是 AI 算法问题,而是一个“不稳定智能组件”的系统工程问题。作为一名资深 Java 开发工程师,在进入 智能体(AI Agent)方向时,最大的优势是:工程能力、系统设计能力、并发与分布式经验。真正需要补的不是“再学一门语言”,而是 AI 思维 + Agent 架构 + LLM 工…

作者头像 李华
网站建设 2026/7/21 9:12:43

第13章:项目资源管理【章节重点】

信息系统项目管理师第13章&#xff1a;项目资源管理【章节重点】。重点章节&#xff1a;不论是单选、案例分析还是论文都是考点&#xff0c;本视频由科科过软考整理制作。 第13章&#xff1a;项目资源管理【章节重点】

作者头像 李华