草榴社区邀请码 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草榴社区邀请码