# 2337. Move Pieces to Obtain a String ###### tags: `Leetcode` `Medium` `Two Pointers` Link: https://leetcode.com/problems/move-pieces-to-obtain-a-string/description/ ## 思路 和[0777. Swap Adjacent in LR String](https://hackmd.io/L9wvI1fuSsqwKi6FcPwI6g)一样 首先要保证删掉所有的_之后 两个字符串是一样的 因为L和R不能跨过对方 其次因为```target```里的L必须是从```start```里对应的L向左移动得到,所以另一个必要条件就是查看他们的初始位置:```start```里的L必须比```target```里对应的L更靠右。同理,```start```里的R必须比```target```里对应的R更靠左。如果不满足,就可以直接返回false。 ## Code ```java= class Solution { public boolean canChange(String start, String target) { int p1=0, p2=0; if(start.length()!=target.length()) return false; for(p1=0; p1<start.length(); p1++){ if(start.charAt(p1)=='_') continue; while(p2<target.length() && target.charAt(p2)=='_'){ p2++; } if(p2==target.length()) return false; if(start.charAt(p1)!=target.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<target.length()){ if(target.charAt(p2)!='_') 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