
LeetCode - 1750. 删除字符串两端相同字符后的最短长度——左右指针
发布日期:2021-05-07 21:20:24
浏览次数:21
分类:精选文章
本文共 1494 字,大约阅读时间需要 4 分钟。
题目描述
给你一个只包含字符 ‘a’,‘b’ 和 ‘c’ 的字符串 s ,你可以执行下面这个操作(5 个步骤)任意次:
选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。
选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。 前缀和后缀在字符串中任意位置都不能有交集。 前缀和后缀包含的所有字符都要相同。 同时删除前缀和后缀。 请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度 。示例 1:
输入:s = “ca”
输出:2 解释:你没法删除任何一个字符,所以字符串长度仍然保持不变。 示例 2:输入:s = “cabaabac”
输出:0 解释:最优操作序列为:- 选择前缀 “c” 和后缀 “c” 并删除它们,得到 s = “abaaba” 。
- 选择前缀 “a” 和后缀 “a” 并删除它们,得到 s = “baab” 。
- 选择前缀 “b” 和后缀 “b” 并删除它们,得到 s = “aa” 。
- 选择前缀 “a” 和后缀 “a” 并删除它们,得到 s = “” 。 示例 3:
输入:s = “aabccabba”
输出:3 解释:最优操作序列为:- 选择前缀 “aa” 和后缀 “a” 并删除它们,得到 s = “bccabb” 。
- 选择前缀 “b” 和后缀 “bb” 并删除它们,得到 s = “cca” 。
解题思路
首先先将左边第一个与右边第一个进行比较,如果不相等马上返回字符串长度。
如果两者相等,则将左边向右移,寻找第一个不相等的字符;同理,再将右边向左移。class Solution { public int minimumLength(String s) { int left = 0; int right = s.length() - 1; char[] c = s.toCharArray(); for (left = 0; left < c.length - 1;left++){ if (left < right){ if (c[left] != c[right]){ return right - left + 1; }else { while (c[left] == c[right] && left < right){ left++; } left--; while (c[left] == c[right] && left < right){ right--; } } }else if (left > right){ return 0; }else { return 1; } } return left > right ? 0 : right - left + 1; }}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月28日 02时35分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
A Guide to Node.js Logging
2021-05-07
webwxbatchgetcontact一个神奇的接口
2021-05-07
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2021-05-07
仿小米商城(上)
2021-05-07
HTML 和 CSS 简单实现注册页面
2021-05-07
(SpringMVC)springMVC.xml 和 web.xml
2021-05-07
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
2021-05-07
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2021-05-07
二分查找与插入排序的结合使用
2021-05-07
892 三维形体的表面积(分析)
2021-05-07
279 完全平方数(bfs)
2021-05-07
875 爱吃香蕉的珂珂(二分查找)
2021-05-07
第十一届蓝桥杯python组第二场省赛-数字三角形
2021-05-07
BST中某一层的所有节点(宽度优先搜索)
2021-05-07
Dijkstra算法的总结
2021-05-07
Vue实现选项卡功能
2021-05-07
vue中接收后台的图片验证码并显示
2021-05-07
趣谈win10常用快捷键
2021-05-07
数学建模更新12(数学线性规划模型1)
2021-05-07