- class Solution {
- public:
- string removeStars(string s) {
- stack<char>st;
- for(int i=0;i
size();i++){//字符加入栈,遇到星号弹出栈 - if(s[i]!='*') st.push(s[i]);
- else st.pop();
- }
- int n=st.size();
- for(int i=n-1;i>=0;i--){//把栈中元素倒序赋值给s
- char mid=st.top();
- s[i]=mid;
- st.pop();
- }
- return s.substr(0,n);//截取s的结果部分
- }
- };
遍历数组,当出现两个星球相撞时
所以,栈顶元素小的情况下,可能当前遍历星球会存活,所以引入 bool 变量记录
- class Solution {
- public:
- vector<int> asteroidCollision(vector<int>& asteroids) {
- vector<int>res;
- int n=asteroids.size();
- for(int it:asteroids){//遍历数组
- bool alive=true;//判断当前行星是否存活
- while(alive && it<0 && !res.empty() && res.back()>0){
- alive=res.back()<-it;//记录当前值大于栈顶值,当前值存活
- if(res.back()<=-it) res.pop_back();//弹出较小的栈顶
- }
- if(alive) res.push_back(it);//当前行星存活,直接加入
- }
- return res;
- }
- };
- class Solution {
- public:
- string decodeString(string s) {
- stack
int>>st; - int num=0;
- string res;
- for(char it:s){
- if(it>='0' && it<='9') num=num*10+(it-'0');//遍历到数字时
- else if(it=='['){//遍历到左括号
- st.push(make_pair(res,num));
- res="";
- num=0;
- }
- else if(it==']'){//遍历到右括号
- string pre=st.top().first;//获取上次的结果字符
- int n=st.top().second;//获取当前字符对应的数字
- string cur;
- for(int i=0;i
- res=pre+cur;
- st.pop();
- }
- else res+=it;//遍历到字母
- cout<
- }
- return res;
- }
- };
-
相关阅读:
【Java设计模式 常用编程设计原则】KISS、YAGNI和DRY原则
基于B2B平台的医疗病历交互系统
计算机毕业设计(附源码)python智慧校园系统
Spring中拦截器重复注册的问题排查
php将在线远程文件写入临时文件
AWS认证SAA-C03每日一题
从零开始编写一个 Python 异步 ASGI WEB 框架
【JS】获取hash模式下URL的搜索参数
docker镜像与容器基本的基本操作
js — 原生轮播图的制作
-
原文地址:https://blog.csdn.net/Ricardo_XIAOHAO/article/details/133363811