返回介绍

solution / 2300-2399 / 2390.Removing Stars From a String / README_EN

发布于 2024-06-17 01:03:06 字数 4343 浏览 0 评论 0 收藏 0

2390. Removing Stars From a String

中文文档

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.

 

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 "leet**cod*e". s becomes "lee*cod*e".
- The closest character to the 2nd star is 'e' in "lee*cod*e". s becomes "lecod*e".
- The closest character to the 3rd star is 'd' in "lecod*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.

Solutions

Solution 1

class Solution:
  def removeStars(self, s: str) -> str:
    ans = []
    for c in s:
      if c == '*':
        ans.pop()
      else:
        ans.append(c)
    return ''.join(ans)
class Solution {
  public String removeStars(String s) {
    StringBuilder ans = new StringBuilder();
    for (int i = 0; i < s.length(); ++i) {
      if (s.charAt(i) == '*') {
        ans.deleteCharAt(ans.length() - 1);
      } else {
        ans.append(s.charAt(i));
      }
    }
    return ans.toString();
  }
}
class Solution {
public:
  string removeStars(string s) {
    string ans;
    for (char c : s) {
      if (c == '*') {
        ans.pop_back();
      } else {
        ans.push_back(c);
      }
    }
    return ans;
  }
};
func removeStars(s string) string {
  ans := []rune{}
  for _, c := range s {
    if c == '*' {
      ans = ans[:len(ans)-1]
    } else {
      ans = append(ans, c)
    }
  }
  return string(ans)
}
function removeStars(s: string): string {
  const ans: string[] = [];
  for (const c of s) {
    if (c === '*') {
      ans.pop();
    } else {
      ans.push(c);
    }
  }
  return ans.join('');
}
impl Solution {
  pub fn remove_stars(s: String) -> String {
    let mut ans = String::new();
    for &c in s.as_bytes().iter() {
      if c == b'*' {
        ans.pop();
      } else {
        ans.push(char::from(c));
      }
    }
    ans
  }
}
class Solution {
  /**
   * @param String $s
   * @return String
   */
  function removeStars($s) {
    $rs = [];
    for ($i = 0; $i < strlen($s); $i++) {
      if ($s[$i] == '*') {
        array_pop($rs);
      } else {
        array_push($rs, $s[$i]);
      }
    }
    return join($rs);
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文