当前位置: 首页 > news >正文

【LeetCode 75】第二十四题(2390)从字符串中移除星号

目录

题目:

示例:

分析:

代码+运行结果:


题目:

示例:

分析:

题目给我们一个字符串,然后字符串中包含星号*,要求每个星号消除一个从星号左边起最近的一个字符,返回消除后的字符串。

首先每个星号*要消除从左开始的第一个字符,并且自身也被移除,这不免让我们想到先进后出,后进先出这个概念,因此我们自然而然就可以想到使用栈来解决这道题。

一开始我使用的是C++内置的stack(栈)这个容器后,由于我们返回的结果还是需要按照正常的顺序排列的字符串,而一个个将字符从栈中取出则是相反的顺序,如果要正常排列,还需要加一道工序,因此我们可以使用vector来模拟栈,并且取结果的时候也可以从左到右自然地取出。

我们先遍历一边原字符串,然后在遇到非星号的字符则直接入栈,遇到星号时不仅不入栈,还需要将栈顶元素弹出表示星号消除掉了一个从左开始第一个字符。(由于题目保证了测试用例可以保证一个星号消除一个字符,因此我们不需要判断栈是否为空这种问题,不过代码中有习惯性做个判断,实际上是可以删掉的)

代码+运行结果:

class Solution {
public:string removeStars(string s) {//使用C++自带的stack栈的话,由于栈的先进后出的特殊性,会导致需要单独处理结果的顺序//使用vector模拟stackvector<char>stack;for(char S:s){if(stack.empty()||S!='*') stack.push_back(S);   //如果栈为空或者元素不为*则入栈//由于题目保证合法操作(即一个*会消除一个字符)因此实际上else if可以改成else,并且上面的if也不需要判断栈是否不为空else if(!stack.empty()) stack.pop_back();   //如果为*,不仅不入栈,并且要弹出一个最后进入的元素}string res="";for(const char &S:stack){res+=S;}return res;}
};

http://www.lryc.cn/news/115448.html

相关文章:

  • 通向架构师的道路之weblogic的集群与配置
  • SpringBoot 项目创建与运行
  • FOHEART H1数据手套:连接虚拟与现实,塑造智能交互新未来
  • MyBatis学习笔记3
  • ES6学习-Symbol
  • 【Redis】使用Docker镜像配置集群时的Operation timed out问题
  • Java 生产初学常用注解
  • mousedown拖拽功能(vue3+ts)
  • 【论文阅读】基于深度学习的时序异常检测——TransAD
  • NLPCC 出版部分相关源码记录
  • 【Windbg】通过网络调试windows内核
  • 代码随想录算法训练营之JAVA|第二十四天| 93. 复原 IP 地址
  • 网络安全 Day30-运维安全项目-堡垒机部署
  • 电脑文件夹备份命令
  • RocketMQ Learning(一)
  • libmpv使用滤镜处理视频进行播放
  • Harbor.cfg 配置文件参数详解
  • 模仿火星科技 基于cesium+ 贴地测量+可编辑
  • 模仿火星科技 基于cesium+角度测量+高度测量+可编辑
  • Codeforces の 动态规划
  • 数学建模-爬虫系统学习
  • HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制概述
  • 【力扣刷题 | 第二十五天】
  • GO学习之 函数(Function)
  • Jstack线上问题排查
  • VIM 编辑器: Bram Moolenaar
  • 鸿蒙应用开发指南:从零开始构建一款智能音乐播放器
  • 如何实现对主机的立体监控?
  • 机器学习笔记:李宏毅ChatGPT Finetune VS Prompt
  • 中电金信:逐数兴业 智启未来——“数据二十条”影响之解读 (下)