多米诺骨牌

class Solution(object):
    def pushDominoes(self, dominoes):
        symbols = [(i, x) for i, x in enumerate(dominoes) if x != '.']
        symbols = [(-1, 'L')] + symbols + [(len(dominoes), 'R')]
        ans = list(dominoes)

        for (i, x), (j, y) in zip(symbols, symbols[1:]):
            if x == y:
                for k in range(i + 1, j):
                    ans[k] = x
            # because R>L,and this is the solution for the case that like R...L
            # if L...R,there is no need to change anything,so just ignore.
            elif x > y:
                for k in range(i + 1, j):
                    ans[k] = '.LR'[cmp(k - i, j - k)]
        return "".join(ans)


def cmp(a, b):
    if a == b:
        return 0
    elif a > b:
        return 1
    else:
        return 2


'''
输入:".L.R...LR..L.."
输出:"LL.RR.LLRRLL.."
输入:"RR.L"
输出:"RR.L"
说明:第一张多米诺骨牌没有给第二张施加额外的力。
'''
print(Solution.pushDominoes(Solution, ".L.R...LR..L.."))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值