3168. 候诊室中的最少椅子数
给你一个字符串 s
,模拟每秒钟的事件 i
:
s[i] == 'E'
,表示有一位顾客进入候诊室并占用一把椅子。s[i] == 'L'
,表示有一位顾客离开候诊室,从而释放一把椅子。返回保证每位进入候诊室的顾客都能有椅子坐的 最少 椅子数,假设候诊室最初是 空的 。
示例 1:
输入:s = "EEEEEEE"
输出:7
解释:
每秒后都有一个顾客进入候诊室,没有人离开。因此,至少需要 7 把椅子。
示例 2:
输入:s = "ELELEEL"
输出:2
解释:
假设候诊室里有 2 把椅子。下表显示了每秒钟等候室的状态。
秒 | 事件 | 候诊室的人数 | 可用的椅子数 |
---|---|---|---|
0 | Enter | 1 | 1 |
1 | Leave | 0 | 2 |
2 | Enter | 1 | 1 |
3 | Leave | 0 | 2 |
4 | Enter | 1 | 1 |
5 | Enter | 2 | 0 |
6 | Leave | 1 | 1 |
示例 3:
输入:s = "ELEELEELLL"
输出:3
解释:
假设候诊室里有 3 把椅子。下表显示了每秒钟等候室的状态。
秒 | 事件 | 候诊室的人数 | 可用的椅子数 |
---|---|---|---|
0 | Enter | 1 | 2 |
1 | Leave | 0 | 3 |
2 | Enter | 1 | 2 |
3 | Enter | 2 | 1 |
4 | Leave | 1 | 2 |
5 | Enter | 2 | 1 |
6 | Enter | 3 | 0 |
7 | Leave | 2 | 1 |
8 | Leave | 1 | 2 |
9 | Leave | 0 | 3 |
提示:
1 <= s.length <= 50
s
仅由字母 'E'
和 'L'
组成。s
表示一个有效的进出序列。相似题目
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2024-06-04 09:45:45
impl Solution { pub fn minimum_chairs(s: String) -> i32 { let mut ans = 0; let mut cnt = 0; for c in s.chars() { if c == 'E' { cnt += 1; ans = std::cmp::max(ans, cnt); } else { cnt -= 1; } } ans } }
php 解法, 执行用时: 3 ms, 内存消耗: 20 MB, 提交时间: 2024-06-04 09:41:03
class Solution { /** * @param String $s * @return Integer */ function minimumChairs($s) { $ans = 0; $cnt = 0; foreach ( str_split($s) as $c ) { if ( $c == 'E' ) { $cnt++; $ans = max($ans, $cnt); } else { $cnt--; } } return $ans; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2024-06-04 09:39:51
func minimumChairs(s string) (ans int) { cnt := 0 for _, c := range s { if c == 'E' { cnt++ ans = max(ans, cnt) } else { cnt-- } } return }
java 解法, 执行用时: 1 ms, 内存消耗: 41.2 MB, 提交时间: 2024-06-04 09:39:34
class Solution { public int minimumChairs(String s) { int ans = 0; int cnt = 0; for (char c : s.toCharArray()) { if (c == 'E') { ans = Math.max(ans, ++cnt); } else { cnt--; } } return ans; } }
cpp 解法, 执行用时: 2 ms, 内存消耗: 7.8 MB, 提交时间: 2024-06-04 09:39:12
class Solution { public: int minimumChairs(string s) { int ans = 0, cnt = 0; for (char c : s) { if (c == 'E') { ans = max(ans, ++cnt); } else { cnt--; } } return ans; } };
python3 解法, 执行用时: 35 ms, 内存消耗: 16.4 MB, 提交时间: 2024-06-04 09:38:56
# E => 上车,L => 下车,车上最多几个人 class Solution: def minimumChairs(self, s: str) -> int: ans = cnt = 0 for c in s: if c == 'E': cnt += 1 ans = max(ans, cnt) else: cnt -= 1 return ans