字符转换问题 题目描述 给定两个长度为 N、仅由A和B组成的字符串 S和 T。用Si表示S 中从左数第i个字符
你可以重复执行以下操作任意次数(包括零次)
选择满足1≤i<j≤N的整数i和j,将 S_i替换为 A,并将 S_j替换为B
判断是否能让S与T相等。如果可以,求出所需的最少操作次数
输入格式
第一行一个整数N表示字符串的长度
第二行一个长度为N的字符串S
第三行一个长度为N的字符串T
输出格式 如果无法让S与T相等,输出-1
否则,输出使S与T相等所需的最少操作次数
input1
5
BAABA
AABAB
output1
2
input2
5
BAABA
AABBB
output2
2
input3
2
AB
BA
output3
-1
我的代码;
#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=0;
string s,t;
int main(){
cin>>n>>s>>t;
s=' '+s,t=' '+t;
stack<char>p;
for (int i=1;i<=n;i++){
if (s[i]==t[i])continue;
if (p.size()==0){
p.push(t[i]);
}else if(p.top()==s[i]){
p.pop();
ans++;
}else{
p.push(t[i]);
}
}
cout<<ans;
return 0;
}
为什么0分?