常见题型罢了!!! 传送门 :
题意给你一个主串 S S S 和一个目的串 T T T 问是否可以 让 S S S通过操作获得 T T T
操作如下: " a b c d e f " "abcdef" "abcdef" 让 c c c变成退格键 得 " a b { b a c k s p a c e } d e f " "ab \{backspace\}def" "ab{backspace}def" 即 " a d e f " "adef" "adef"
思路因为这个操作 是后面的影响前面的 因此我们可以考虑从后处理, 因为如果我们处理前面的话,后面会有剩余导致不好处理
如果我们从后面处理的话 ,如果遇到不相同的,那么一定是这个和它前面的是必删的,因为这个无法被后面的删除,只能让自己变成退格键
因此我们可以使用双指针 : i 指 向 s 的 末 尾 j 指 向 t 的 末 尾 i指向s的末尾 j指向t的末尾 i指向s的末尾j指向t的末尾
- 如果 s [ i ] = s [ j ] , i − − , j − − s[i]=s[j] ,i--,j-- s[i]=s[j],i−−,j−−
- 如果 s [ i ] ! = s [ j ] , i − − , i − − s[i]!=s[j],i--,i-- s[i]!=s[j],i−−,i−−
#include
using namespace std;
#define ll long long
#define endl '\n'
const int N = 10;
void cal()
{
}
void solve()
{
string s,t;
cin>>s>>t;
bool flag = false;
int n = s.size();
int m = t.size();
if(n
关注
打赏