题目地址:
https://leetcode.com/problems/check-if-word-is-valid-after-substitutions/description/
给定一个长
n
n
n字符串
s
s
s,问是否能从空串出发,每次在任一位置插入"abc"
使得其变成
s
s
s。
考虑最后一步,最后一步一定是插入"abc"
,所以我们只需要倒过来做,让
s
s
s中每次删除一个"abc"
子串,最后看是否能变空。代码如下:
class Solution {
public:
bool isValid(string s) {
if (s.size() % 3) return false;
string t;
for (char ch : s) {
t += ch;
if (t.size() >= 3 && t.substr(t.size() - 3) == "abc")
t.resize(t.size() - 3);
}
return t.empty();
}
};
时空复杂度 O ( n ) O(n) O(n)。