站外题求助
  • 板块学术版
  • 楼主Supa7onyz
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/8/5 14:22
  • 上次更新2025/8/5 18:07:46
查看原帖
站外题求助
1095806
Supa7onyz楼主2025/8/5 14:22

字符转换问题 题目描述 给定两个长度为 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相等所需的最少操作次数

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分?

2025/8/5 14:22
加载中...