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

题目

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

给你一个字符串 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 <= 105
  • s 只包含小写英文字母。

解法

解法一:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
public String makeFancyString(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int n = sb.length();
if (sb.length() >= 2 && sb.charAt(n - 1) == c && sb.charAt(n - 2) == c) {
continue;
}
sb.append(c);
}

return sb.toString();
}
0%