草榴社区邀请码 2025-01-07: 删除星号以后字典序最小的字符串。用go话语, 给定一

草榴社区邀请码 2025-01-07: 删除星号以后字典序最小的字符串。用go话语, 给定一

2025-01-07:删除星号以后字典序最小的字符串。用go话语草榴社区邀请码,给定一个字符串 s,其中可能包含大肆数目的 '*' 字符。

咱们的看法是移除总共的 '*' 字符。

在字符串中唯有还有至少一个 '*' 字符,咱们不错践诺以下操作:

1.删除最左侧的 '*' 字符。

2.同期,删除一个字典序最小的字符。淌若存在多个字典序最小的字符,任选其一删除。

最终,咱们需要复返在删除总共 '*' 字符后,剩余字符勾通成的字典序最小的字符串。

1

s 只含有小写英翰墨母和 '*' 字符。

输入保证操作不错删除总共的 '*' 字符。

输入:s = "aaba*"。

输出:"aab"。

评释注解:

删除 '*' 号和它左边的其中一个 'a' 字符。淌若咱们采选删除 s[3] ,s 字典序最小。

谜底2025-01-07:

chatgpt[1]草榴社区邀请码

题目来自leetcode3170。

大身面容如下:

1.创建一个空字节切片 s,将给定字符串 S 调理为字节数组存储在 s 中,并脱手化一个空的二维切片 st,用来纪录字符串中每个字母的索引位置。

2.脱手化一个整数 mask,用来默示刻下字符串中存在的字母,脱手值为0。

3.遍历字符串 s 中的每个字符,淌若字符不是 '*',则践诺以下时势:

• 将该字符调理为索引值(a对应0,b对应1,依此类推)。

• 在 st 中纪录该字符出现的索引位置。

• 将相应的字母位置的比特位建造为1,更新 mask。

4.淌若刻下字符是 '*',则践诺以下时势:

• 找到 mask 中最低位的字母索引 k。

• 从 st 中取出终末一个索引位置 p。

• 在 st 中更新该字母的索引,删除终末一个索引位置。

性吧论坛

• 淌若该字母的索引位置为空,将相应的比特位从 mask 中移除。

5.创建一个新的空字节切片 t,用于存储科罚后的字符串。

6.遍历科罚后的字符串 s,淌若字符不是 '*',则将其添加到 t 中。

7.复返 t 构成的字符串。

总的时分复杂度为 O(n),其中 n 是字符串的长度。

寥落空间复杂度为 O(n),其中 n 是字符串的长度,主要用来存储 st 和 t 这两个扶助数组。

Go好意思满代码如下:

package mainimport ( "fmt" "math/bits")func clearStars(S string) string { s := []byte(S) st := make([][]int, 26) mask := 0 for i, c := range s { if c != '*' { c -= 'a' st[c] = append(st[c], i) mask |= 1

C++好意思满代码如下:

#include #include #include #include std::string clearStars(std::string S) { std::vector> st(26); int mask = 0; for (size_t i = 0; i

Python好意思满代码如下:

# -*-coding:utf-8-*-def clear_stars(S: str) -> str: s = list(S) st = [[] for _ in range(26)] # 存放每个字符的位置 mask = 0 for i, c in enumerate(s): if c != '*': index = ord(c) - ord('a') # 调理字符为对应索引 st[index].append(i) # 存储字符的位置 mask |= (1

援用畅达

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP草榴社区邀请码