游游拿到两个相同长度的字符串和。她想知道自己能否恰好做一次以下操作,使得和相等 ? 选择的两个字符,交换它们的位置。 共有组询问。
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到两个相同长度的字符串和。她想知道自己能否恰好做一次以下操作,使得和相等?
- 选择的两个字符,交换它们的位置。
共有组询问。
#include <iostream> #include <vector> using namespace std; /* 首先判断字符出现次数是否相同,并统计字符不同位置的个数 特殊情况 原本字符串相同,判断条件变为字符串中是否有一个字符出现两次 */ int main() { int n; cin >> n; string a, b; while (n--) { cin >> a >> b; int n = a.size(), diff = 0; vector<int> count1(26, 0), count2(26, 0); /// 统计每个字符出现次数,字符与下标对应转换 for (int i = 0; i < n; ++i) { if (a[i] != b[i]) ++diff; count1[a[i] - 'a']++; count2[b[i] - 'a']++; } bool flag = false; if (diff == 0) { for (const int& x : count1) if (x >= 2) flag = true; } else if (diff == 2) { int i; for (i = 0; i < 26; ++i) if (count1[i] != count2[i]) break; if (i == 26) flag = true; } cout << (flag == false ? "No" : "Yes") << endl; } } // 64 位输出请用 printf("%lld")
48:47
以上就是关于问题游游拿到两个相同长度的字符串和。她想知道自己能否恰好做一次以下操作,使得和相等 ?
选择的两个字符,交换它们的位置。
共有组询问。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训