「每日LeetCode」2021年8月8日

本文最后更新于:2023年3月19日 晚上

Lt5193. 删除字符使字符串变好

5193. 删除字符使字符串变好

一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串
给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串
请你返回删除后的字符串。题目数据保证答案总是 唯一的  **。
**示例 1:

1
2
3
4
5
输入:s = "leeetcode"
输出:"leetcode"
解释:
从第一组 'e' 里面删除一个 'e' ,得到 "leetcode"
没有连续三个相同字符,所以返回 "leetcode"

示例 2:

1
2
3
4
5
6
输入:s = "aaabaaaa"
输出:"aabaa"
解释:
从第一组 'a' 里面删除一个 'a' ,得到 "aabaaaa"
从第二组 'a' 里面删除两个 'a' ,得到 "aabaa"
没有连续三个相同字符,所以返回 "aabaa"

示例 3:

1
2
3
输入:s = "aab"
输出:"aab"
解释:没有连续三个相同字符,所以返回 "aab"

提示:

  • 1 <= s.length <= 10
  • s 只包含小写英文字母。

思路

遍历字符串,将每个不同的字符串加入结果字符串,遍历下一个如果和上一个字符一样,不关心重复了几个,直接移动指针直到重复字符串结束,将当前字符串加入结果字符串中即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {string} s
* @return {string}
*/
var makeFancyString = function (s) {
let prev = s[0];
let res = s[0];
for (let i = 1; i < s.length; i++) {
const char = s[i];
if (char === prev) {
while (s[i + 1] === prev) i++;
} else {
prev = char;
}
res += char;
}
return res;
};