leetcode 2390. Removing Stars From a String(删除字符串的*)

leetcode 2390. Removing Stars From a String(删除字符串的*)_第1张图片
对于字符串的’ * ‘, 删除离它最近的左侧的字母,并删除’ * '本身。
返回删除所有‘ * ’之后的string.
操作总是有效的。

思路:

因为遇到’ * ‘删除的是它最近的左侧的字母,
想到用stack, 遇到’ * '就出栈一个字母,否则入栈。
因为操作总是有效的,不用考虑操作过程中栈为空的情况。

用数组模拟stack.

    public String removeStars(String s) {
        int n = s.length();
        char[] st = new char[n];
        int head = -1;

        for(int i = 0; i < n;i ++) {
            char ch = s.charAt(i);
            if(ch == '*') head --;
            else st[++head] = ch;
        }
        return String.valueOf(st,0,head+1); //param: char arr, offset, count
    }

你可能感兴趣的:(leetcode,leetcode,算法)