LeetCode 838 推多公尺諾

2022-09-06 00:30:32 字數 1376 閱讀 6917

一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。

在開始時,我們同時把一些多公尺諾骨牌向左或向右推。

每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。

同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。

如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的兩邊,由於受力平衡, 該骨牌仍然保持不變。

就這個問題而言,我們會認為正在下降的多公尺諾骨牌不會對其它正在下降或已經下降的多公尺諾骨牌施加額外的力。

給定表示初始狀態的字串 "s" 。如果第 i 張多公尺諾骨牌被推向左邊,則 s[i] = 'l';如果第 i 張多公尺諾骨牌被推向右邊,則 s[i] = 'r';如果第 i 張多公尺諾骨牌沒有被推動,則 s[i] = '.'。

返回表示最終狀態的字串。

示例 1:

輸入:".l.r...lr..l.."

輸出:"ll.rr.llrrll.."

0 <= n <= 10^5

表示多公尺諾骨牌狀態的字串只含有 'l','r'; 以及 '.';

class solution:

def pushdominoes(self, dominoes: str) -> str:

if len(dominoes)<2:

return dominoes

last_ans = dominoes

ans = none

while 1:

ans_list =

for i in range(len(last_ans)):

if i==0:

pre = '.'

cur = last_ans[i]

cur_next = last_ans[i+1]

elif i==len(last_ans)-1:

pre = last_ans[i-1]

cur = last_ans[i]

cur_next = '.'

else:

pre = last_ans[i-1]

cur = last_ans[i]

cur_next = last_ans[i+1]

if cur !='.':

else:

if pre == 'r' and cur_next == 'l':

elif pre == 'r':

elif cur_next == 'l':

else:

ans = ''.join(ans_list)

#print(ans)

if ans == last_ans:

break

else:

last_ans = ans

return ans

LeetCode 838 推多公尺諾

一行中有n張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。給定表示初始狀態的字串 s 如果第 i 張多公尺諾骨牌被推向左邊,則s i l 如果第 i 張多公尺諾骨牌被推向右邊,則s i r 如果第 i 張多公尺諾骨牌沒有被推動,則s i 返回表示最終...

leetcode838 推多公尺諾

一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...

Leetcode 838 推多公尺諾 C

一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...