专栏文章
1
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mir0kgsv
- 此快照首次捕获于
- 2025/12/04 13:47 3 个月前
- 此快照最后确认于
- 2025/12/04 13:47 3 个月前
CPP
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
string A, B;
cin >> A >> B;
unordered_map<char, int> freqA, freqB;
// 统计A中每个字符的频率
for (char ch : A) {
freqA[ch]++;
}
// 统计B中每个字符的频率
for (char ch : B) {
freqB[ch]++;
}
// 检查每个字符在B中的频率是否为A中的整数倍
int lengthA = A.length();
int lengthB = B.length();
bool isMultiple = true;
int k = -1;
for (auto &pair : freqA) {
char ch = pair.first;
int countA = pair.second;
if (freqB.find(ch) == freqB.end()) {
isMultiple = false;
break;
}
int countB = freqB[ch];
if (countB % countA != 0) {
isMultiple = false;
break;
}
// 计算倍数k(这里只计算一个字符的倍数关系,最后需要验证长度)
int tempK = countB / countA;
// 如果是第一次计算倍数,则记录k
if (k == -1) {
k = tempK;
} else if (k != tempK) {
// 如果之前已经计算过k,但当前字符的倍数不一致,则不是整数倍
isMultiple = false;
break;
}
}
// 验证长度关系
if (isMultiple && lengthB == k * lengthA) {
cout << k << endl;
} else {
cout << -1 << endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...