LeetCode 2390. Removing Stars From a String
Contents
2390.RemovingStarsFromaString.py
class Solution:
def removeStars(self, s: str) -> str:
stack = []
for char in s: # 遍歷字串s
if char == '*': # 如果字符是星號
if stack: # 且堆疊不為空
stack.pop() # 就彈出堆疊的頂部元素
else: # 如果字符不是星號,就加入堆疊
stack.append(char)
return ''.join(stack) # 將堆疊中的元素組成答案字串
if __name__ == '__main__':
sol = Solution()
assert sol.removeStars("leet**cod*e") == "lecoe"
assert sol.removeStars("erase*****") == ""
lc2390RemovingStarsFromaString_test.go
package lc
import "testing"
func removeStars(s string) string {
stack := []rune{}
for _, char := range s {
if char == '*' {
if len(stack) > 0 {
stack = stack[:len(stack)-1] // Pop the top element
}
} else {
stack = append(stack, char)
}
}
return string(stack)
}
func TestRemoveStars(t *testing.T) {
tests := []struct {
input string
expect string
}{
{"leet**cod*e", "lecoe"},
{"erase*****", ""},
}
for _, test := range tests {
result := removeStars(test.input)
if result != test.expect {
t.Errorf("For input '%s', expected '%s', but got '%s'", test.input, test.expect, result)
}
}
}