🔗 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;
}
};