给你一个下标从 0 开始的字符串 s ,重复执行下述操作 任意 次: 在字符串中选出一个下标 i ,并使 c 为字符串下标 i 处的字符。并在 i 左侧(如果有)和 右侧(如果有)各 删除 一个距离 i 最近 的字符 c 。 请你通过执行上述操作任意次,使 s 的长度 最小化 。 返回一个表示 最小化 字符串的长度的整数。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/minimize-string-length 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给你一个下标从 0 开始的字符串 s ,重复执行下述操作 任意 次: 在字符串中选出一个下标 i ,并使 c 为字符串下标 i 处的字符。并在 i 左侧(如果有)和 右侧(如果有)各 删除 一个距离 i 最近 的字符 c 。 请你通过执行上述操作任意次,使 s 的长度 最小化 。 返回一个表示 最小化 字符串的长度的整数。 用哈希写出Java并带注释
时间: 2024-03-04 21:51:05 浏览: 51
```java
class Solution {
public int minimumLength(String s) {
int left = 0, right = s.length() - 1;
while (left < right) {
char c = s.charAt(left);
int l = left, r = right;
// 找到左侧最近的与 c 不同的字符的位置
while (l < r && s.charAt(l + 1) == c) {
l++;
}
// 找到右侧最近的与 c 不同的字符的位置
while (l < r && s.charAt(r - 1) == c) {
r--;
}
// 如果左侧与右侧已经重合,说明无法再删除字符了,直接跳出循环
if (l == r) {
break;
}
// 如果左侧与右侧相邻,那么剩下的字符就无法再删除了,直接返回长度
if (l + 1 == r) {
return 2;
}
// 否则,将左侧、右侧各往中间靠近一位
left = l + 1;
right = r - 1;
}
// 最终剩余的字符串就是最小化后的结果
return right - left + 1;
}
}
```
注释:该算法通过双指针的方式,不断找到左侧与右侧最近的与 c 不同的字符的位置,并将左侧、右侧各往中间靠近一位,直到无法再删除字符或左侧与右侧相邻为止,最终剩余的字符串就是最小化后的结果。时间复杂度为 O(n)。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![f90](https://img-home.csdnimg.cn/images/20250102104920.png)
![md](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)