小美有两个长度为只包含小写字母的字符串和,小美定义“两个字符串的匹配度”为中的数量,例如”abacd”和”aabdd”的匹配度就是2。 现在你可以进行最多一次以下操作: 对于字符串,选择两个索引,交换和。 小美想知道,和的最大字符串匹配度是多少?
区块链毕设网qklbishe.com为您提供问题的解答
小美有两个长度为只包含小写字母的字符串和,小美定义“两个字符串的匹配度”为中的数量,例如”abacd”和”aabdd”的匹配度就是2。
现在你可以进行最多一次以下操作:
对于字符串,选择两个索引,交换和。
小美想知道,和的最大字符串匹配度是多少?
# 使用hash来保存t中字母在s中的所有角标位置信息。 n = int(input()) s=input() t=input() def maxRes(s,t): res =0 ss,tt='','' for c1,c2 in zip(s,t): if c1 ==c2: res+=1 else: ss+=c1 tt+=c2 return res,ss,tt res,s,t = maxRes(s,t) c2i={} for i,c in enumerate(s): if c not in c2i: c2i[c]=[] c2i[c].append(i) eps =0 for i in range(len(t)): if t[i] not in c2i: continue if eps ==0: eps=1 indices_s=c2i[t[i]]#s中ti出现的角标 for index_s in indices_s: if t[index_s] in c2i and i in c2i[t[index_s]]: res+=2 print(res) exit() print(res+eps)
14:52
#include <iostream>
using namespace std;
int getAns(int n, string s, string t) {
int result = 0;
string ss, ts;
for (int i = 0; i < n; i++) {
if (s[i] == t[i]) result++;
else {
ss += s[i];
ts += t[i];
}
}
int temp = 0;
for (int j = 0; j < ss.size(); ++j) {
int i = ts.find(ss[j]);
while (i != ts.npos) {
if (ss[i] == ts[j]) {
result += 2;
return result;
} else {
temp = 1;
i = ts.find(ss[j], i + 1);
}
}
}
return temp + result;
}
int main() {
int n;
string s, t;
cin >> n >> s >> t;
cout << getAns(n, s, t) << endl;
return 0;
}
编辑于 今天 15:44:17
#include <iostream> using namespace std; int getAns(int n, string s, string t) { int ans=0; string s1 = "", t1 = ""; for (int i=0; i<n; ++i) { if (s[i] == t[i]) ++ans; else { s1 += s[i]; t1 += t[i]; } } int m = s1.length(); int a = 0; for (int i=0; i<m; ++i) { for (int j=0; j<m; ++j) { if (s1[i] == t1[j]) { a = 1; if (s1[j] == t1[i]) return ans+2; } } } return ans+a; } int main() { int n; string s, t; cin>>n>>s>>t; cout<<getAns(n,s,t)<<endl; return 0; }
编辑于 今天 10:36:44
以上就是关于问题小美有两个长度为只包含小写字母的字符串和,小美定义“两个字符串的匹配度”为中的数量,例如”abacd”和”aabdd”的匹配度就是2。
现在你可以进行最多一次以下操作:
对于字符串,选择两个索引,交换和。
小美想知道,和的最大字符串匹配度是多少?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训