Contents

LeetCode 2390. Removing Stars From a String

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)
		}
	}
}