本文最后更新于:2023年3月19日 晚上
Lt5193. 删除字符使字符串变好
一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。
给你一个字符串 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
|
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; };
|