小球左右碰撞--推多米诺
作者:
goldstine
,
2022-05-04 21:26:24
,
所有人可见
,
阅读 388
推多米诺
推多米诺
class Solution {
public String pushDominoes(String s) {
s='L'+s+'R';
int n=s.length();
int[] left=new int[n];int[] right=new int[n];
for(int i=0,j=0;i<n;i++){
if(s.charAt(i)!='.'){
j=i;
}
left[i]=j;
}
for(int i=n-1,j=0;i>=0;i--){
if(s.charAt(i)!='.'){
j=i;
}
right[i]=j;
}
StringBuilder sb=new StringBuilder();
for(int i=0;i<n;i++){
char L=s.charAt(left[i]);char R=s.charAt(right[i]);
if(L=='L'&&R=='R'){
sb.append('.');
}else if(L=='L'&&R=='L'){
sb.append('L');
}else if(L=='R'&&R=='R'){
sb.append('R');
}else{
if(i-left[i]<right[i]-i){
sb.append('R');
}else if(right[i]-i<i-left[i]){
sb.append('L');
}else{
sb.append('.');
}
}
}
sb.deleteCharAt(0);
sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
}