当前位置: 首页 > 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;}
}

相关文章:

  • 【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
  • 深度学习入门(十三):加深网络
  • 做高仿包的网站有哪些/百度快速排名平台
  • 电子商务网站建设工具/抖音seo排名优化
  • 建设银行总行信息网站/seo优化师就业前景
  • 地区门户网站 建设攻略/seo搜索引擎优化是通过优化答案
  • 做网站需要编程吗/网页设计图
  • 网站开发众包平台/互联网广告营销