2337. Move Pieces to Obtain a String 思路 two pointer 兩個指標i、j分別對應到start跟target 遇到'_'就繼續往下一個,直到兩個指標都指向非'_'的元素 接著判斷兩個指標指向的元素是不是相同 不是就回傳false (1)如果是'L' 看i是不是比j還小 是就回傳false (2)如果是'R' 看i是不是比j還大 是就回傳false 如果能這樣一直比對成功直到最後 就回傳true golang code func canChange(start string, target string) bool { n, m := len(start), len(target) i, j := 0, 0 for i < n && j < m { for i < n && start[i] == '_' { i++ } for j < m && target[j] == '_' { j++ } if i < n && j < m { if start[i] == target[j] { if (start[i] == 'L' && i < j) || (start[i] == 'R' && i > j) { return false } i++ j++ } else { return false } } } for i < n && start[i] == '_' { i++ } for j < m && target[j] == '_' { j++ } if i < n || j < m { return false } return true } -- ※ 發信站: 批踢踢實業坊(pttsite.org.tw), 來自: 111.71.212.231 (臺灣) ※ 文章網址: https://pttsite.org.tw/Marginalman/M.1733404549.A.F55