LeetCode 75: 2390. Removing Stars From a String

김준수·2024년 3월 14일
0

LeetCode 75

목록 보기
24/63
post-custom-banner

leetcode link

Description

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.

문자 * 을 포함하고있는 문자열 s가 주어집니다.

한 번의 연산으로 다음 작업들을 할 수 있습니다.

  • s에서 별 하나를 선택합니다.
  • 선택한 별 왼쪽에서 별이 아닌 가장 가까운 문자를 제거하고 선택한 별 자체도 제거합니다.

모든 별이 제거된 후 문자열을 반환합니다.

참고:

  • 항상 연산이 가능한 입력만 주어집니다.
  • 연산의 결과로 나온 문자열은 항상 특정 문자열로 나타낼 수 있습니다.

Example 1:

Input: s = "leet**cod*e"
Output: "lecoe"
Explanation: 가장 왼쪽 별에서 오른쪽으로 제거를 수행합니다::

  • 처음 입력에서 첫 번쨰 별에 가장 가까운 문자는 't'. s는 "le*cod*e"가 됨.
  • 처음 입력에서 두 번쨰 별에 가장 가까운 문자는 't'. s는 "lecod*e"가 됨.
  • 처음 입력에서 세 번째 별에 가장 가까운 문자는 'd'. s는 "lecoe"가 됨.

더이상 별이 없으므로 "lecoe"를 반환

Example 2:

Input: s = "erase*****"
Output: ""
Explanation: 전체 문자열을 지우므로 빈 문자열 ""를 반환.

Constraints:

  • 1 <= s.length <= 105
  • s는 영어 소문자와 별 *로 구성됩니다.
  • 위의 연산은 s에서만 수행할 수 있습니다.

Solution

class Solution {
    public String removeStars(String s) {
        StringBuffer solution = new StringBuffer();
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == '*'){
                solution.setLength(solution.length()-1);
            }
            else{
                solution.append(s.charAt(i));
            }
        }

        return solution.toString();
    }
}
post-custom-banner

0개의 댓글