社区讨论
站外题求助
学术版参与者 2已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mdy5m924
- 此快照首次捕获于
- 2025/08/05 14:24 7 个月前
- 此快照最后确认于
- 2025/11/04 03:10 4 个月前
字符转换问题
题目描述
给定两个长度为 N、仅由A和B组成的字符串 S和 T。用表示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相等所需的最少操作次数
LATEXinput1
5
BAABA
AABAB
output1
2
input2
5
BAABA
AABBB
output2
2
input3
2
AB
BA
output3
-1
我的代码;
CPP#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分?
回复
共 6 条回复,欢迎继续交流。
正在加载回复...