5193. 删除字符使字符串变好
一个字符串如果没有 三个连续?相同字符,那么它就是一个 好字符串?。
给你一个字符串?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” 。
解题思路
当遇到3个连续字符时,不加入最终最终结果的字符串,最后就可以保证结果字符串是好字符串
代码
class Solution {
public String makeFancyString(String s) {
char pre=s.charAt(0);
int cnt=1,res=0;
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append(pre);
for (int i=1;i<s.length();i++)
{
if(s.charAt(i)==pre)
{
if (++cnt<=2)
{
stringBuilder.append(s.charAt(i));
}
}else{
cnt=1;
pre=s.charAt(i);
stringBuilder.append(pre);
}
}
return stringBuilder.toString();
}
}
|