C# 17 lines, With Comments, O(n) time, O(1) space
\npublic class Solution \n{\n    public bool CanChange(string start, string target) \n    {\n        int startR = 0, // free R\'s in start\n            targetL 
```\npublic class Solution \n{\n    public bool CanChange(string start, string target) \n    {\n        int startR = 0, // free R\'s in start\n            targetL = 0; // needed L\'s for target\n\t\t\t\n        foreach ((int startC, int targetC) in start.Zip(target)) \n        {\n            if (startC == \'R\') ++startR; // we can move this R\'s to the right later\n            if (targetC == \'L\') ++targetL; // we need this L\'s, hope they will come to us later\n            \n            if (startC == \'L\') \n            {\n                if (targetL == 0 || startR != 0) return false; // target doesn\'t need L, or we didn\'t finished with R\'s yet\n                --targetL; // target gets L\n            }\n            if (targetC == \'R\')\n            {\n                if (startR == 0 || targetL != 0) return false; // we don\'t have free R or target want L\'s first\n                --startR; // yeah we have that R for you\n            } \n        }\n        return targetL == 0 && startR == 0; // everyone is satisfied\n    }\n}\n```
[]