838 - Push Dominoes
정보
- 문제 보기: 838 - Push Dominoes
- 소요 시간: 33분 48초
- 풀이 언어:
java
- 체감 난이도: 2️⃣~3️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
투포인터
풀이 코드
정보
- 메모리: 46300 KB
- 시간: 18 ms
class Solution {
int[] rdist;
int[] ldist;
int n;
public String pushDominoes(String dominoes) {
n = dominoes.length();
char[] dArr = dominoes.toCharArray();
rdist = new int[n];
ldist = new int[n];
int force = 0;
for (int i = 0; i < n; ++i) {
if (dArr[i] == 'R') {
force = 1;
rdist[i] = force++;
}
else if (dArr[i] == 'L') {
rdist[i] = 0;
force = 0;
}
else {
if (force > 0) rdist[i] = force++;
else rdist[i] = 0;
}
}
force = 0;
for (int i = n-1; i > -1; --i) {
if (dArr[i] == 'L') {
force = 1;
ldist[i] = force++;
}
else if (dArr[i] == 'R') {
ldist[i] = 0;
force = 0;
}
else {
if (force > 0) ldist[i] = force++;
else ldist[i] = 0;
}
}
for (int i = 0; i < n; ++i) {
if (dArr[i] == '.') {
if (ldist[i] < rdist[i]) dArr[i] = ldist[i] > 0 ? 'L' : 'R';
else if (ldist[i] > rdist[i]) dArr[i] = rdist[i] > 0 ? 'R' : 'L';
}
}
return String.valueOf(dArr);
}
}