实际上这个就是模拟的思想,就是列举这个里面的可能的情况:因为是不可以构成连续的重复的字符,因此这个时候我们需要按照下面的步骤进行操作:1)遍历,从前向后进行遍历,首先需要找到这个?的位置;
2)对于这个问号的前后进行判断,和前面的,和后面的都不可以一样;
3)针对特殊情况的处理:如果这个?位于第一个位置,这个时候他的前面没有任何的元素,我们只需要对于他的后面进行比较就可以了;同理,如果他是位于这个字符串里面的最后一个位置,他的后面也是没有元素的,这个时候只需要和他前面的元素进行比较就可以了;
1)参数的转换,把默认的这个string转换为字符数组,方便我们可以直接试用下标进行读取;
2)求解数组的长度,控制我们的循环的终止的条件(因为我们需要遍历找到这个?的位置,因为需要知道这个字符数组的长度大小);
3)找到了这个?之后,我们需要替换掉,这个时候再次嵌套for循环,这个主要是从abcdefg…z分别放在这个位置上面试一下;
4)下面的这个if是两个的&&,左边的是这个位置的字符不和前面的字符相等,右边的条件是这个ch不和后面的字符相等;
5)同时这个里面包含了我们的特殊情况,就是第一个字符和最后一个字符,分别放在这个&&的左边和右边作为条件;
6)满足不和前面一样,不和后面一样之后,就使用这个字符把我们的?替换掉,break退出循环;
7)全部结束之后,把这个数组转换为string作为返回值即可;