思路:
先从头到尾将字符串a变为全为0的字符串,再从尾到头将这个全为0的字符串一点一点的变为全部符合字符串b的情况。
代码:
(C1+C2一样代码)
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N=1e5+7;
const double eps=1e-8;
const int mod=1e9+7;
const int inf=0x7fffffff;
const double pi=3.1415926535;
signed main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string s1,s2;
cin>>s1>>s2;
vector<int>q;
char c=s1[0];
for(int i=1;i<n;i++)
{
if(s1[i]!=c)
{
q.push_back(i);
c=s1[i];
}
else
{
continue;
}
}
for(int i=n-1;i>=0;i--)
{
if(s2[i]==c)
{
continue;
}
else
{
q.push_back(i+1);
c=s2[i];
}
}
cout<<q.size()<<" ";
for(int i=0;i<q.size();i++)
{
cout<<q[i]<<" ";
}
cout<<endl;
}
return 0;
}

本文介绍了一种高效的算法,用于将一个字符串通过最少的操作次数转换为另一个字符串。算法首先将源字符串转化为全0状态,然后逐步调整至目标字符串。通过记录转换过程中的关键操作点,实现了字符串的高效转换。
1066

被折叠的 条评论
为什么被折叠?



