LeetCode 2337. Move Pieces to Obtain a String

42 阅读1分钟

🔗 leetcode.com/problems/mo…

题目

  • 给定两个字符串,start 和 target,都由 L _ R 组成
  • L 表示可以往 left 移动如果 left 是 blank,R 则是可以往 right 移动
  • 判断是否可以经过移动从 start 到 target

思路

  • 判断 start 中的 L 的 index 是否大于等于 target 中的 L 的 index,否则无法经过移动变成 target
  • start 中的 R 的 index 需要小于等于 target 中的 R 的 index

代码

class Solution {
public:
    bool canChange(string start, string target) {
        vector<pair<char, int>> s, t;
        for (int i = 0; i < start.size(); i++) {
            if (start[i] == 'L' || start[i] == 'R') {
                auto item = make_pair(start[i], i);
                s.push_back(item);
            }
            if (target[i] == 'L' || target[i] == 'R') {
                auto item = make_pair(target[i], i);
                t.push_back(item);
            }
        }
        if (s.size() != t.size()) return false;
        for (int i = 0; i < s.size(); i++) {
            if (t[i].first == 'L') {
                if (s[i].first != 'L') return false;
                if (s[i].second < t[i].second) return false;
            } else {
                if (s[i].first != 'R') return false;
                if (s[i].second > t[i].second) return false;
            }
        }
        return true;
        
    }
};