# 0777. Swap Adjacent in LR String ###### tags: `Leetcode` `Medium` `Two Pointers` Link: https://leetcode.com/problems/swap-adjacent-in-lr-string/description/ ## 思路 和[2337. Move Pieces to Obtain a String](https://hackmd.io/PhWeQn2_SjSyIYg7L2iuWg)一样 首先要保证删掉所有的X之后 两个字符串是一样的 因为L和R不能跨过对方 其次因为```end```里的L必须是从```start```里对应的L向左移动得到,所以另一个必要条件就是查看他们的初始位置:```start```里的L必须比```end```里对应的L更靠右。同理,```start```里的R必须比```end```里对应的R更靠左。如果不满足,就可以直接返回false。 ## Code ```java= class Solution { public boolean canTransform(String start, String end) { if(start.length()!=end.length()) return false; int p1=0, p2=0; for(p1=0; p1<start.length(); p1++){ if(start.charAt(p1)=='X') continue; while(p2<end.length() && end.charAt(p2)=='X'){ p2++; } if(p2==end.length()) return false; if(start.charAt(p1)!=end.charAt(p2)) return false; if(start.charAt(p1)=='L' && p1<p2) return false; if(start.charAt(p1)=='R' && p1>p2) return false; p2++; } while(p2<end.length()){ if(end.charAt(p2)!='X') return false; p2++; } return true; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up