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

3561.移除相邻字符

给你一个由小写英文字母组成的字符串 s。

你 必须 在字符串 s 中至少存在两个 连续 字符时,反复执行以下操作:

移除字符串中 最左边 的一对按照字母表 连续 的相邻字符(无论是按顺序还是逆序,例如 ‘a’ 和 ‘b’,或 ‘b’ 和 ‘a’)。
将剩余字符向左移动以填补空隙。
当无法再执行任何操作时,返回最终的字符串。

注意:字母表是循环的,因此 ‘a’ 和 ‘z’ 也视为连续。

示例 1:

输入: s = “abc”

输出: “c”

解释:

从字符串中移除 “ab”,剩下 “c”。
无法进行进一步操作。因此,所有可能移除操作后的最终字符串为 “c”。
示例 2:

输入: s = “adcb”

输出: “”

解释:

从字符串中移除 “dc”,剩下 “ab”。
从字符串中移除 “ab”,剩下 “”。
无法进行进一步操作。因此,所有可能移除操作后的最终字符串为 “”。
示例 3:

输入: s = “zadb”

输出: “db”

解释:

从字符串中移除 “za”,剩下 “db”。
无法进行进一步操作。因此,所有可能移除操作后的最终字符串为 “db”。

解题思路

套路题:对于这种邻相相消的题,都可以用**栈 **的思路。

class Solution {public String resultingString(String s) {StringBuilder sb = new StringBuilder();for(char c : s.toCharArray()){sb.append(c);if(sb.length() > 1 && isConsecutive(sb.charAt(sb.length() - 2), sb.charAt(sb.length() - 1))){sb.setLength(sb.length() - 2);}}return sb.toString();}private boolean isConsecutive(char a , char b){int distance = Math.abs(a - b);return distance == 1 || distance == 25;}
}
http://www.dtcms.com/a/215160.html

相关文章:

  • 【LangChain表达式语言(LCEL)应用实践】
  • 军事大模型及其应用分析
  • TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型
  • 链表面试题10之随机链表的复制
  • MySQL数据库零基础入门教程:从安装配置到数据查询全掌握
  • MySQL增删改查基础教程:熟练掌握DML语句操作【MySQL系列】
  • 58、【OS】【Nuttx】编码规范解读(六)
  • java每日精进 5.26【本地缓存】
  • Java----自动装箱和自动拆包 与 泛型
  • 基数排序---Java版本
  • springboot上传文件
  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • 解锁集成电路制造新建项目的防震黑科技-江苏泊苏系统集成有限公司
  • 纯彩天气隐私政策
  • java高级 -动态代理
  • unix的定时任务和quartz和spring schedule的cron表达式区别
  • 信息论基础理论与应用全面指南
  • 前端配置nginx代理
  • 原生js实现数据响应方法2.0
  • 深度学习入门(十三):加深网络
  • Linux Docker 安装oracle19c数据库教程
  • 【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day
  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 如何用AI设计LOGO,DeepSeek+豆包免费批量生成
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • CodeGeeX - AI编程助手
  • Java Swing 自定义JOptionPane
  • 【文本分类】KG-HTC 知识图谱提升分类准确率