前言:
这道题并不是我自己一个人想出来的,我只是在诸位大佬的思路下解出这道题。
这道题想了2天,网络上也没有题解,使用模拟,或者set集合进行解题都会超时。
多谢 高天大哥,西电爷给的思路,在他们的思路下我对代码进行了细化最终全部测试用例通过。
解题思路:
1. 将字符合并成节点
例如:
aaaabbbbcccc
合并成
(a, 4), (b, 4), (c, 4) 注意,这里不是元组是链表节点的属性,第一个代表字符,第二个代表长度。
2. 遍历链表每个节点
3. 当节点size大于等于2时左右节点 -1 ,当前节点 - 2
4. 合并节点,当一个节点size <= 0 时被丢弃
代码
class ListNode:
def __init__(self, char=None, size=0):
self.char = char
self.size = size
self.next = None
self.pre = None
self.right = False
self.left = False
def __str__(self):
return "(Char: %s, Size: %s, Left: %s, Right: %s)" % (self.char, self.size, self.left, self.right)
__repr__ = __str__

最低0.47元/天 解锁文章
992

被折叠的 条评论
为什么被折叠?



