一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。
在開始時,我們同時把一些多公尺諾骨牌向左或向右推。
每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。
同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。
如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的兩邊,由於受力平衡, 該骨牌仍然保持不變。
就這個問題而言,我們會認為正在下降的多公尺諾骨牌不會對其它正在下降或已經下降的多公尺諾骨牌施加額外的力。
給定表示初始狀態的字串 「s」 。如果第 i 張多公尺諾骨牌被推向左邊,則 s[i] = 『l』;如果第 i 張多公尺諾骨牌被推向右邊,則 s[i] = 『r』;如果第 i 張多公尺諾骨牌沒有被推動,則 s[i] = 『.』。
返回表示最終狀態的字串。
示例 1:
輸入:".l.r...lr..l.."
輸出:"ll.rr.llrrll.."
示例 2:
輸入:"rr.l"
輸出:"rr.l"
說明:第一張多公尺諾骨牌沒有給第二張施加額外的力。
在某個區間left~right(區間端點均不為".",且除兩個端點內,其餘元素都是".")內,共有三種情況:
首先在字串左右兩端新增額外的字元,左邊新增『l』,右邊新增『r』。記當前字元為』l』,當前位置為0.遍歷字串,找到第1個不是"."的元素,變換該區間內的字元;變換結束後更新當前字元和當前位置;
返回字串即可;
class
solution
}return newstr.
substr(1
, newstr.
size()
-2);
}void
cutstring
(string & dominoes,
char l,
char r,
int left,
int right)
// 左邊向左倒,右邊向右倒,則中間多公尺諾不動
else
if(l ==
'l')
else
if(l ==
'r')
}return;}
};
LeetCode 838 推多公尺諾
一行中有n張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。給定表示初始狀態的字串 s 如果第 i 張多公尺諾骨牌被推向左邊,則s i l 如果第 i 張多公尺諾骨牌被推向右邊,則s i r 如果第 i 張多公尺諾骨牌沒有被推動,則s i 返回表示最終...
LeetCode 838 推多公尺諾
一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...
Leetcode 838 推多公尺諾 C
一行中有 n 張多公尺諾骨牌,我們將每張多公尺諾骨牌垂直豎立。在開始時,我們同時把一些多公尺諾骨牌向左或向右推。每過一秒,倒向左邊的多公尺諾骨牌會推動其左側相鄰的多公尺諾骨牌。同樣地,倒向右邊的多公尺諾骨牌也會推動豎立在其右側的相鄰多公尺諾骨牌。如果同時有多公尺諾骨牌落在一張垂直豎立的多公尺諾骨牌的...