題意
給一個初始串和目標串,兩種操作,問能不能變過去。
思路
我們不能從初始串考慮如何變過去,這樣情況太多。
考慮從目標串能不能變成初始串。
由題意,我們知道不管加的是A還是B,最後都在字符串的最後一位。也就是說target的最後一位一定是剛纔新加的。並且去掉之後只有唯一的字符串對應。
所以我們就一直去掉target的最後一位,直到長度和initial相等,比較一下即可。
代碼
class ABBA {
public:
string canObtain(string initial, string target) {
while (SZ(target) != SZ(initial))
{
if (target.back() == 'A') target.pop_back();
else
{
target.pop_back();
reverse(target.begin(), target.end());
}
}
return target == initial ? "Possible" : "Impossible";
}
};