2025-01-05:候诊室中的最少椅子数。用go语言,给定一个字符串s

架构师课程 2025-01-05 19:00:37

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

总结:

• 时间复杂度:遍历字符串 s 的时间复杂度为 O(N),其中 N 为字符串 s 的长度。• 空间复杂度:除了输入参数外,只使用了常数级的额外空间,因此空间复杂度为 O(1)。Go完整代码如下:package mainimport ( "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 ansif __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

引用链接

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

0 阅读:0