前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串 s,模拟每秒发生的事件 i: 1.当 s[i] 为 ‘E

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

作者头像
福大大架构师每日一题
发布2025-01-07 08:23:52
发布2025-01-07 08:23:52
520
举报
文章被收录于专栏:福大大架构师每日一题

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
复制
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
复制
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
复制
#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
复制
#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
复制
# -*-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
复制
#!/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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
  • C完整代码如下:
  • C++完整代码如下:
  • Python完整代码如下:
  • Shell完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档