本文主要是介绍2390.从字符串中移除星号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个包含若干星号
*
的字符串s
。
在一步操作中,你可以:
选中s
中的一个星号。 移除星号左侧最近的那个非星号字符,并移除该星号自身。 返回移除 所有 星号之后的字符串。
注意:
生成的输入保证总是可以执行题面中描述的操作。 可以证明结果字符串是唯一的。
示例 1:
输入:s = “leet**cod*e”
输出:“lecoe”
解释:从左到右执行移除操作:
- 距离第 1 个星号最近的字符是 “leet**code" 中的 ‘t’ ,s 变为 "leecod*e” 。
- 距离第 2 个星号最近的字符是 “leecode” 中的 ‘e’ ,s 变为 “lecod*e” 。
- 距离第 3 个星号最近的字符是 “lecod*e” 中的 ‘d’ ,s 变为 “lecoe” 。
不存在其他星号,返回 “lecoe” 。
示例 2:
输入:s = “erase*****”
输出:“”
解释:整个字符串都会被移除,所以返回空字符串。
解题思路
使用栈思想,创建一个vector用于存储结果,然后遍历s:
如果是'*'
,则弹出vector末尾元素;
如果不是'*'
,则将该元素添加到vector;
最后转化为string类型数据返回
class Solution {
public:string removeStars(string s) {vector<char> st;for (char c : s) {if(c=='*'){st.pop_back();}else{st.push_back(c);}}return string(st.begin(), st.end());}
};
这篇关于2390.从字符串中移除星号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!