社区讨论

站外题求助

学术版参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mdy5m924
此快照首次捕获于
2025/08/05 14:24
7 个月前
此快照最后确认于
2025/11/04 03:10
4 个月前
查看原帖
字符转换问题 题目描述 给定两个长度为 N、仅由A和B组成的字符串 S和 T。用SiS_i表示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相等所需的最少操作次数
LATEX
input1

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 条回复,欢迎继续交流。

正在加载回复...