删除字符使字符串变好

小超芳 / 2023-08-11 / 原文

一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。

给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 。

请你返回删除后的字符串。题目数据保证答案总是 唯一的 。

示例 1:

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

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

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

效率还是太低,屎山代码

class Solution {
    public String makeFancyString(String s) {
        //单次遍历,依次添加到StringBuilder,遇到三次字母相同则不添加
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<s.length();i++){
            char a = s.charAt(i);
            int len = sb.length();
            if(sb.length()>=2&&sb.charAt(len-2)==a&&sb.charAt(len-1)==a){
                continue;
            }
            sb.append(a);
        }
        return sb.toString();
    }
}