-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathSolution.java
51 lines (48 loc) · 1.63 KB
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package leetcode.algo.dynamic_programming.leet_zh_838;
public class Solution {
/*
* 838. Push Dominoes
* 执行用时 : 178 ms
* 内存消耗 : 67.8 MB
* */
public String pushDominoes(String dominoes) {
String curDominoes = dominoes;
StringBuilder res = new StringBuilder();
int cnt;
while (true) {
cnt = 0;
for (int i = 0; i < curDominoes.length(); i++) {
char c = curDominoes.charAt(i);
if (c == 'L' || c == 'R') {
res.append(c);
continue;
}
// !R.L
// R.!L
if (i - 1 >= 0 && curDominoes.charAt(i - 1) == 'R' && (i + 1 >= curDominoes.length() || curDominoes.charAt(i + 1) != 'L')) {
res.append('R');
cnt++;
continue;
}
if (i + 1 < curDominoes.length() && curDominoes.charAt(i + 1) == 'L' && (i - 1 < 0 || curDominoes.charAt(i - 1) != 'R')) {
res.append('L');
cnt++;
continue;
}
res.append(c);
}
if (cnt == 0) {
break;
}
curDominoes = res.toString();
res = new StringBuilder();
}
return res.toString();
}
public static void main(String[] args) {
Solution ss = new Solution();
System.out.println(ss.pushDominoes(".L.R...LR..L.."));
System.out.println(ss.pushDominoes("RR.L"));
System.out.println(ss.pushDominoes("R."));
}
}