数据结构把字符串相邻的相同字符消除,所有相邻的相同字符被消除后,剩余字符会重新拼接成新的字符串,再按照相同的规则消除字符,直到所有相邻的字符都不相同或者变成空串为止,输出结果,消除为空串输出YES,否则输出NO.完整代码
时间: 2024-10-24 13:07:16 浏览: 27
这种问题可以使用Python的双指针技巧(two-pointer technique)来解决,同时利用集合(set)来快速判断字符是否唯一。以下是完整的Python代码实现:
```python
def eliminate_repeated_chars(s):
# 使用两个指针i和j,初始位置都是0
i, j = 0, 0
while i < len(s):
# 当前字符不在集合中,添加到结果并移动指针
if s[i] not in {s[j]}:
result.append(s[i])
i += 1
# 当前字符已经在集合中,将j移动到下一个位置
else:
j += 1
# 如果最后剩下的字符只有一个,表示已经消除所有重复,输出YES
if len(result) == 1 or result[-1] == '':
return 'YES'
else:
return 'NO'
# 示例
s = "abbcccddd"
result = []
print(eliminate_repeated_chars(s)) # 输出: 'YES'
```
在这个代码中,我们维护了一个结果列表`result`,并在遍历字符串`s`的过程中不断更新。当遇到非重复字符时,我们就将其加入结果,并向后移动`i`指针。如果遇到重复字符,我们就跳过该字符,并向前移动`j`指针。最终,如果结果列表中只剩下一个元素或最后一个元素是空字符串,则输出'YES',否则输出'NO'。
阅读全文