Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串 s,模拟每秒发生的事件 i: 1.当 s[i] 为 ‘E

2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串 s,模拟每秒发生的事件 i: 1.当 s[i] 为 ‘E

作者头像
福大大架构师每日一题
发布于 2025-01-07 00:23:52
发布于 2025-01-07 00:23:52
6900
代码可运行
举报
运行总次数:0
代码可运行

2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串 s,模拟每秒发生的事件 i:

1.当 s[i] 为 'E',表示一位顾客进入候诊室并占用一把椅子。

2.当 s[i] 为 'L',表示一位顾客离开候诊室,释放一把椅子。

请计算并返回为确保每位进入候诊室的顾客都有座位所需的最少椅子数量,假设候诊室一开始是空的。

1 <= s.length <= 50。

s 仅由字母 'E' 和 'L' 组成。

s 表示一个有效的进出序列。

输入:s = "EEEEEEE"。

输出:7。

解释:

每秒后都有一个顾客进入候诊室,没有人离开。因此,至少需要 7 把椅子。

答案2025-01-05:

chatgpt[1]

题目来自leetcode3168。

大体步骤如下:

  1. 1. 函数 minimumChairs 接收一个字符串 s,代表顾客进出候诊室的情况。初始化变量 cnt 为0,用于跟踪当前正在使用的椅子数量。另外,初始将答案 ans 设为0。
  2. 2. 开始遍历字符串 s 中的每个字符 c
  3. 3. 对于每个字符 c,检查它是否为 'E',代表有顾客进入候诊室。如果是,则将 cnt 值加一,表示多占用一个椅子,然后将 ans 更新为当前 anscnt 的最大值。这样可以记录候诊室中需要的最多椅子数量。
  4. 4. 如果字符 c 不是 'E',则表示有顾客离开,此时将 cnt 值减一,释放一个椅子。
  5. 5. 遍历完成后,返回最终的 ans 即为确保每位进入候诊室的顾客都有座位所需的最少椅子数量。

总结:

  • • 时间复杂度:遍历字符串 s 的时间复杂度为 O(N),其中 N 为字符串 s 的长度。
  • • 空间复杂度:除了输入参数外,只使用了常数级的额外空间,因此空间复杂度为 O(1)。

Go完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import(
"fmt"
)

func minimumChairs(s string)(ans int){
    cnt :=0
for _, c :=range s {
if c =='E'{
            cnt++
            ans = max(ans, cnt)
}else{
            cnt--
}
}
return
}

func main(){
    s :="EEEEEEE"
    result := minimumChairs(s)
    fmt.Println(result)
}

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fn minimum_chairs(s:&str)->i32{
letmut cnt=0;
letmut ans=0;

forcin s.chars(){
if c =='E'{
            cnt +=1;
            ans = ans.max(cnt);
}else{
            cnt -=1;
}
}

    ans
}

fnmain(){
lets="EEEEEEE";
letresult=minimum_chairs(s);
println!("{}", result);
}

C完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <string.h>

intmax(int a, int b){
return a > b ? a : b;
}

intminimum_chairs(const char* s){
int cnt =0;
int ans =0;

for(int i =0; i <strlen(s); i++){
if(s[i]=='E'){
            cnt++;
            ans = max(ans, cnt);
}
else{
            cnt--;
}
}

return ans;
}

intmain(){
constchar* s ="EEEEEEE";
int result = minimum_chairs(s);
printf("%d\n", result);
return0;
}

C++完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <string>
#include <algorithm>

int minimumChairs(const std::string& s) {
int cnt =0;
int ans =0;

for(char c : s){
if(c =='E'){
            cnt++;
            ans = std::max(ans, cnt);
}
else{
            cnt--;
}
}

return ans;
}

int main() {
    std::string s ="EEEEEEE";
int result =minimumChairs(s);
    std::cout << result << std::endl;
return0;
}

Python完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*-coding:utf-8-*-

defminimum_chairs(s: str)->int:
    cnt =0
    ans =0

for c in s:
if c =='E':
            cnt +=1
            ans =max(ans, cnt)
else:
            cnt -=1

return ans

if __name__ =="__main__":
    s ="EEEEEEE"
    result = minimum_chairs(s)
print(result)

Shell完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

# 计算所需的最小椅子数量
function minimum_chairs{
local s="$1"
local cnt=0
local ans=0

for(( i=0; i<${#s}; i++ )); do
local c="${s:i:1}"
if[["$c"=="E"]];then
((cnt++))
if(( cnt > ans ));then
                ans=$cnt
fi
else
((cnt--))
fi
done

echo"$ans"
}

# 主函数
function main{
local s="EEEEEEE"
local result
    result=$(minimum_chairs "$s")
echo"$result"
}

# 调用主函数
main
引用链接

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2025-05-22:找到初始输入字符串Ⅱ。用go语言,Alice 在键盘上输入一个字符串,但由于输入时可能按键时间过长,导致某
2025-05-22:找到初始输入字符串Ⅱ。用go语言,Alice 在键盘上输入一个字符串,但由于输入时可能按键时间过长,导致某些字符被重复输入多次。
福大大架构师每日一题
2025/05/22
380
2025-05-22:找到初始输入字符串Ⅱ。用go语言,Alice 在键盘上输入一个字符串,但由于输入时可能按键时间过长,导致某
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,对字符串中每个字符进行如下替换规则:
福大大架构师每日一题
2025/05/25
410
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为 k 特殊字符串。
福大大架构师每日一题
2024/10/10
950
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
2025-01-08:找到按位或最接近 K 的子数组。用go语言,给定一个数组 nums 和一个整数 k,你的目标是找到一个子数
2025-01-08:找到按位或最接近 K 的子数组。用go语言,给定一个数组 nums 和一个整数 k,你的目标是找到一个子数组,使得该子数组中所有元素进行按位或运算后的结果与 k 之间的绝对差值尽量小。
福大大架构师每日一题
2025/01/08
700
2025-01-08:找到按位或最接近 K 的子数组。用go语言,给定一个数组 nums 和一个整数 k,你的目标是找到一个子数
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。
福大大架构师每日一题
2024/10/21
1270
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 ‘*‘ 字符。 我
2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 '*' 字符。
福大大架构师每日一题
2025/01/08
1000
2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 ‘*‘ 字符。 我
2025-03-05:操作后字符串的最短长度。用go语言,给定一个字符串 s,你需要执行以下操作多次: 1.找一个下标 i,使得
2025-03-05:操作后字符串的最短长度。用go语言,给定一个字符串 s,你需要执行以下操作多次:
福大大架构师每日一题
2025/03/06
760
2025-03-05:操作后字符串的最短长度。用go语言,给定一个字符串 s,你需要执行以下操作多次: 1.找一个下标 i,使得
2025-01-10:找到连续赢 K 场比赛的第一位玩家。用go语言,有 n 位玩家参与比赛,玩家的编号从 0 到 n - 1。
2025-01-10:找到连续赢 K 场比赛的第一位玩家。用go语言,有 n 位玩家参与比赛,玩家的编号从 0 到 n - 1。
福大大架构师每日一题
2025/01/10
860
2025-01-10:找到连续赢 K 场比赛的第一位玩家。用go语言,有 n 位玩家参与比赛,玩家的编号从 0 到 n - 1。
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩:
福大大架构师每日一题
2025/01/07
920
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
2025-01-06:无需开会的工作日。用go语言,给定一个正整数 days,表示员工可以工作的总天数(从第 1 天开始)。 同
2025-01-06:无需开会的工作日。用go语言,给定一个正整数 days,表示员工可以工作的总天数(从第 1 天开始)。
福大大架构师每日一题
2025/01/07
930
2025-01-06:无需开会的工作日。用go语言,给定一个正整数 days,表示员工可以工作的总天数(从第 1 天开始)。 同
2025-01-23:统计逆序对的数目。用go语言,给定一个整数 n 和一个二维数组 requirements,其中每个元素 r
2025-01-23:统计逆序对的数目。用go语言,给定一个整数 n 和一个二维数组 requirem)ents,其中每个元素 requirements[i] = [endi, cnti] 表示在要求中末尾的下标以及逆序对的数量。
福大大架构师每日一题
2025/01/23
1300
2025-01-23:统计逆序对的数目。用go语言,给定一个整数 n 和一个二维数组 requirements,其中每个元素 r
2025-01-21:使二进制数组全部等于 1 的最少操作次数Ⅰ。用go语言,给定一个二进制数组 nums,你可以进行以下操作任
2025-01-21:使二进制数组全部等于 1 的最少操作次数Ⅰ。用go语言,给定一个二进制数组 nums,你可以进行以下操作任意次数(包括0次):
福大大架构师每日一题
2025/01/22
550
2025-01-21:使二进制数组全部等于 1 的最少操作次数Ⅰ。用go语言,给定一个二进制数组 nums,你可以进行以下操作任
2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数, 你
2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数,
福大大架构师每日一题
2023/08/29
1800
2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数,  你
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
福大大架构师每日一题
2025/04/27
550
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字符串里,至少有某个字符出现的次数不少于 k 的子字符串数量。子字符串指的是 s 中连续且非空的一段字符。
福大大架构师每日一题
2025/05/17
520
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如果存在一个字符串 x,使得经过重新排列后,word2 是 x 的一个前缀,那么 x 就被称为“合法”的字符串。
福大大架构师每日一题
2025/04/26
640
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
2025-01-19:数组中的峰值。用go语言,在一个整数数组 nums 中,若某个元素大于其左右相邻的元素,则称该元素为“峰值
2025-01-19:数组中的峰值。用go语言,在一个整数数组 nums 中,若某个元素大于其左右相邻的元素,则称该元素为“峰值”元素。
福大大架构师每日一题
2025/01/19
1930
2025-01-19:数组中的峰值。用go语言,在一个整数数组 nums 中,若某个元素大于其左右相邻的元素,则称该元素为“峰值
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。
福大大架构师每日一题
2024/05/27
1380
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
2024-05-11:用go语言,给定一个从零开始索引的字符串 s, 以及两个字符串 a 和 b,还有一个整数 k。 定义美丽下
输入:s = "isawsquirrelnearmysquirrelhouseohmy", a = "my", b = "squirrel", k = 15。
福大大架构师每日一题
2024/05/17
1380
2024-05-11:用go语言,给定一个从零开始索引的字符串 s, 以及两个字符串 a 和 b,还有一个整数 k。 定义美丽下
2025-01-09:清除数字。用go语言,给定一个字符串 s ,你的任务是执行以下操作,直到字符串中不再有数字字符: 删除第一
2025-01-09:清除数字。用go语言,给定一个字符串 s ,你的任务是执行以下操作,直到字符串中不再有数字字符:
福大大架构师每日一题
2025/01/09
990
2025-01-09:清除数字。用go语言,给定一个字符串 s ,你的任务是执行以下操作,直到字符串中不再有数字字符: 删除第一
推荐阅读
2025-05-22:找到初始输入字符串Ⅱ。用go语言,Alice 在键盘上输入一个字符串,但由于输入时可能按键时间过长,导致某
380
2025-05-24:字符串转换后的长度Ⅰ。用go语言,给定一个字符串 s 和一个整数 t,表示需要进行的转换次数。每次转换中,
410
2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为
950
2025-01-08:找到按位或最接近 K 的子数组。用go语言,给定一个数组 nums 和一个整数 k,你的目标是找到一个子数
700
2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b
1270
2025-01-07:删除星号以后字典序最小的字符串。用go语言,给定一个字符串 s,其中可能包含任意数量的 ‘*‘ 字符。 我
1000
2025-03-05:操作后字符串的最短长度。用go语言,给定一个字符串 s,你需要执行以下操作多次: 1.找一个下标 i,使得
760
2025-01-10:找到连续赢 K 场比赛的第一位玩家。用go语言,有 n 位玩家参与比赛,玩家的编号从 0 到 n - 1。
860
2025-01-02:压缩字符串Ⅲ。用go语言,给定一个字符串 word,请按照以下算法进行压缩: 1.从一个空字符串 comp
920
2025-01-06:无需开会的工作日。用go语言,给定一个正整数 days,表示员工可以工作的总天数(从第 1 天开始)。 同
930
2025-01-23:统计逆序对的数目。用go语言,给定一个整数 n 和一个二维数组 requirements,其中每个元素 r
1300
2025-01-21:使二进制数组全部等于 1 的最少操作次数Ⅰ。用go语言,给定一个二进制数组 nums,你可以进行以下操作任
550
2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数, 你
1800
2025-04-27:统计重新排列后包含另一个字符串的子字符串数目Ⅱ。用go语言,给定两个字符串 word1 和 word2,
550
2025-05-16:字符至少出现 K 次的子字符串Ⅰ。用go语言,给定一个字符串 s 和一个整数 k,要求统计 s 中所有子字
520
2025-04-26:统计重新排列后包含另一个字符串的子字符串数目Ⅰ。用go语言,给定两个字符串 word1 和 word2。如
640
2025-01-19:数组中的峰值。用go语言,在一个整数数组 nums 中,若某个元素大于其左右相邻的元素,则称该元素为“峰值
1930
2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。 定义一个“
1380
2024-05-11:用go语言,给定一个从零开始索引的字符串 s, 以及两个字符串 a 和 b,还有一个整数 k。 定义美丽下
1380
2025-01-09:清除数字。用go语言,给定一个字符串 s ,你的任务是执行以下操作,直到字符串中不再有数字字符: 删除第一
990
相关推荐
2025-05-22:找到初始输入字符串Ⅱ。用go语言,Alice 在键盘上输入一个字符串,但由于输入时可能按键时间过长,导致某
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验