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

举报
福大大架构师每日一题 发表于 2025/01/05 10:00:48 2025/01/05
【摘要】 2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串 s,模拟每秒发生的事件 i:1.当 s[i] 为 ‘E’,表示一位顾客进入候诊室并占用一把椅子。2.当 s[i] 为 ‘L’,表示一位顾客离开候诊室,释放一把椅子。请计算并返回为确保每位进入候诊室的顾客都有座位所需的最少椅子数量,假设候诊室一开始是空的。1 <= s.length <= 50。s 仅由字母 ‘E’ 和 ‘...

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

题目来自leetcode3168。

大体步骤如下:

  1. 函数 minimumChairs 接收一个字符串 s,代表顾客进出候诊室的情况。初始化变量 cnt 为0,用于跟踪当前正在使用的椅子数量。另外,初始将答案 ans 设为0。

  2. 开始遍历字符串 s 中的每个字符 c

  3. 对于每个字符 c,检查它是否为 ‘E’,代表有顾客进入候诊室。如果是,则将 cnt 值加一,表示多占用一个椅子,然后将 ans 更新为当前 anscnt 的最大值。这样可以记录候诊室中需要的最多椅子数量。

  4. 如果字符 c 不是 ‘E’,则表示有顾客离开,此时将 cnt 值减一,释放一个椅子。

  5. 遍历完成后,返回最终的 ans 即为确保每位进入候诊室的顾客都有座位所需的最少椅子数量。

总结:

  • 时间复杂度:遍历字符串 s 的时间复杂度为 O(N),其中 N 为字符串 s 的长度。

  • 空间复杂度:除了输入参数外,只使用了常数级的额外空间,因此空间复杂度为 O(1)。

Go完整代码如下:

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完整代码如下:

fn minimum_chairs(s: &str) -> i32 {
    let mut cnt = 0;
    let mut ans = 0;

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

fn main() {
    let s = "EEEEEEE";
    let result = minimum_chairs(s);
    println!("{}", result);
}

在这里插入图片描述

C完整代码如下:

#include <stdio.h>
#include <string.h>

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

int minimum_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;
}

int main() {
    const char* s = "EEEEEEE";
    int result = minimum_chairs(s);
    printf("%d\n", result);
    return 0;
}

在这里插入图片描述

C++完整代码如下:

#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;
    return 0;
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-

def minimum_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完整代码如下:

#!/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

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。