LeetCode——1957. 删除字符使字符串变好
通过万岁!!!
- 题目:给你一个字符串,然后让你删除几个字符串,让他变成好串,好串的定义就是不要出现连续的3个一样的字符。
- 思路:首先就是要遍历字符串。我们将要返回的字符串定义为ret,我们需要定义一个变量tmp和一个字符ch,ch表示ret的最后一个字符,而tmp表示这个字符在ret的尾部重复的次数。如果遍历到i时,第i字符等于ch,然后看tmp+1是不是等于3了,如果等于3,则表示不能加入,则继续for循环就好了。如果不等于3,则表示这个字符串还可以继续加入到ret中。则进行加入即可。但是如果第i个字符不等于ch,则直接将其加入到ret中,并且将tmp设为1。
- 技巧:字符串遍历
java代码
class Solution {public String makeFancyString(String s) {StringBuilder sb = new StringBuilder();int tmp = 1;char ch = s.charAt(0);sb.append(ch);for (int i = 1; i < s.length(); i++) {if (s.charAt(i) == ch) {if (tmp + 1 != 3) {tmp++;sb.append(ch);}} else {tmp = 1;ch = s.charAt(i);sb.append(ch);}}return sb.toString();}
}
- 总结:这种题目跟爬楼梯的有些类似,都是要记录当前的这个位置的一些状态。