news 2026/5/9 18:33:29

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/5/9 1:53:16

使用cmake构建Cplusplus版运行时库-–-behaviac

原文 请首先到/language/zh/downloads/下载或克隆源码。 缺省的&#xff0c;我们使用cmake来生成对应平台的项目文件&#xff08;sln或make文件等&#xff09;。 但cmake不是必须的&#xff0c;也可以选择自己喜欢的方式创建自己的项目文件。比如&#xff0c;使用premake等来…

作者头像 李华
网站建设 2026/5/9 2:21:41

pytesseract 中英文 识别图片文字

要使用 pytesseract 识别图片文字,你需要先安装 Tesseract OCR引擎 和 Pillow库,然后通过几行 Python 代码导入库、加载图片,并调用 image_to_string() 函数进行识别,传入图片路径和指定语言 (如 ‘eng’ 或 ‘chi_sim’) 即可获得文本内容。 步骤 1: 安装 Tesseract OCR引…

作者头像 李华
网站建设 2026/5/9 2:34:06

20、文件搜索、压缩与归档操作指南

文件搜索、压缩与归档操作指南 1. 文件搜索技巧 在日常的文件管理中,我们常常需要搜索特定的文件。传统的方式可能会多次执行命令,效率较低。为了提高效率,我们可以采用以下两种方法。 1.1 利用 find 命令的新特性 将 find 命令结尾的分号 ; 替换为加号 + ,就能…

作者头像 李华
网站建设 2026/5/9 11:01:56

Flutter 2025:从架构革命到商业落地的终极指南

一、Flutter 2025&#xff1a;为什么它成为大厂的“降维打击”武器&#xff1f;2025 年&#xff0c;全球 Top 50 App 中 42% 使用 Flutter&#xff08;Statista 数据&#xff09;。从 TikTok 国际版到 Google Ads&#xff0c;Flutter 已从“实验性框架”进化为 企业级开发的首选…

作者头像 李华
网站建设 2026/5/8 20:39:55

《终极金钱心智》

本书核心是拆解巴菲特的 “金钱心智”&#xff0c;以其成长与投资历程为脉络&#xff0c;解析价值投资演变与投资哲学内核&#xff1a;一、金钱心智的核心定义与本质金钱心智是一种融合对市场看法、投资方法、投资者气质的世界观&#xff0c;是思考重大财务问题&#xff08;如资…

作者头像 李华