Skip to main content
  1. Posts/

LeetCode-2337 移动片段得到字符串

·1 min·

LeetCode-2337 移动片段得到字符串 #

Solution 1 #

因为 $‘L’$ 只能向左侧的空地走, $‘R’$ 只能向右侧的空地走, 所以 $‘L’$ 和 $‘R’$ 的相对顺序不会变化. 从这一点出发, 我们分别用两个指针遍历 $start$ 与 $target$ , 不断寻找下一个非 $’_’$ 的字符, 如果出现字符不匹配, 显然不能满足题意; 如果字符匹配, 我们还要看一下相对位置对不对, 因为我们只能从 $start$ 向 $target$ 移动. 代码如下:

class Solution {
public:
    bool canChange(string s, string t) {
        int n = s.size();
        int p = 0;
        int q = 0;
        while (p < n && q < n) {
            while (s[p] == '_' && p < n) {
                p++;
            }
            while (t[q] == '_' && q < n) {
                q++;
            }
            if (s[p] != t[q]) {
                return false;
            }
            else {
                if (s[p] == 'L') {
                    if (p < q) {
                        return false;
                    }
                }
                else {
                    if (p > q) {
                        return false;
                    }
                }
            }
            p++;
            q++;
        }
        return true;
    }
};