All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g2301_2400.s2390_removing_stars_from_a_string.Solution Maven / Gradle / Ivy

package g2301_2400.s2390_removing_stars_from_a_string;

// #Medium #String #Stack #Simulation #2022_09_02_Time_31_ms_(90.55%)_Space_62.6_MB_(76.40%)

/**
 * 2390 - Removing Stars From a String\.
 *
 * Medium
 *
 * You are given a string `s`, which contains stars `*`.
 *
 * In one operation, you can:
 *
 * *   Choose a star in `s`.
 * *   Remove the closest **non-star** character to its **left** , as well as remove the star itself.
 *
 * Return _the string after **all** stars have been removed_.
 *
 * **Note:**
 *
 * *   The input will be generated such that the operation is always possible.
 * *   It can be shown that the resulting string will always be unique.
 *
 * **Example 1:**
 *
 * **Input:** s = "leet\*\*cod\*e"
 *
 * **Output:** "lecoe"
 *
 * **Explanation:** Performing the removals from left to right:
 *
 * - The closest character to the 1st star is 't' in "lee**t**\*\*cod\*e". s becomes "lee\*cod\*e".
 *
 * - The closest character to the 2nd star is 'e' in "le**e**\*cod\*e". s becomes "lecod\*e".
 *
 * - The closest character to the 3rd star is 'd' in "leco**d**\*e". s becomes "lecoe".
 *
 * There are no more stars, so we return "lecoe".
 *
 * **Example 2:**
 *
 * **Input:** s = "erase\*\*\*\*\*"
 *
 * **Output:** ""
 *
 * **Explanation:** The entire string is removed, so we return an empty string. 
 *
 * **Constraints:**
 *
 * *   1 <= s.length <= 105
 * *   `s` consists of lowercase English letters and stars `*`.
 * *   The operation above can be performed on `s`.
**/
public class Solution {
    public String removeStars(String s) {
        StringBuilder sb = new StringBuilder();
        int stars = 0;
        for (int i = s.length() - 1; i >= 0; --i) {
            if (s.charAt(i) == '*') {
                ++stars;
            } else if (stars > 0) {
                --stars;
            } else {
                sb.append(s.charAt(i));
            }
        }
        return sb.reverse().toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy