Leetcode 793 Solution

This article provides solution to leetcode question 793 (swap-adjacent-in-lr-string)

https://leetcode.com/problems/swap-adjacent-in-lr-string

Solution

class Solution {
public:
    bool canTransform(string start, string end) {
        if (start.size() != end.size())
            return false;

        int n = start.size();

        vector<pair<char, int>> start2;
        start2.reserve(start.size());
        for (int i = 0; i < n; i++)
            if (start[i] != 'X')
                start2.push_back(make_pair(start[i], i));

        vector<pair<char, int>> end2;
        end2.reserve(end.size());
        for (int i = 0; i < n; i++)
            if (end[i] != 'X')
                end2.push_back(make_pair(end[i], i));

        for (int i = 0; i < n; i++)
        {
            if (start2[i].first != end2[i].first)
                return false;

            if (start2[i].first == 'L' && start2[i].second < end2[i].second)
                return false;

            if (start2[i].first == 'R' && start2[i].second > end2[i].second)
                return false;
        }

        return true;
    }
};