力扣双周赛第58期(上)

282 阅读1分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

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

截屏2021-08-17 下午9.44.53.png

思路分析

如果题目要求我们返回int值,即删除字符串的数量,那就需要我们在连续字符超过3的时候,删除一个字符。

 if(s[i] == s[i - 1]){
    count ++;
    if (count == 3){
        count--;
    }
 }

但是由于题目要求我们返回字符串,所以我们可以使用另一个字符串存储答案,一个简单的将字符赋值给字符串末尾的方法

string tmp = "A";
tmp[0] = b[i];
r += tmp;

1958. 检查操作是否合法

截屏2021-08-17 下午10.25.37.png

截屏2021-08-17 下午10.26.02.png

截屏2021-08-17 下午10.26.30.png

思路分析

如果好线段与坏线段返回关系是一非则非的话这道题还有些难度(其实也不大),现在只需要从八个方向中找到符合好线段条件的“好线段”即可。那么如何判断是否是好线段呢,仅仅需要枚举8 个方向,并对于每个方向验证是否存在以该点为起点的好线段。如果该点与对应方向下一个相同颜色的格点之间的所有格点(至少一个)均为另一种颜色,那么它们构成一个好线段。

可以理解为,确定起点的情况下,如果周边的点不同色,那么就可以顺着方向找,在遇到空白格或者边界之前,如果遇到了和起点相同颜色的点,那么就可以说这是一个好线段,则返回true