换成C++又该如何用map解决
时间: 2024-11-05 07:25:22 浏览: 9
MFC,C++,C语言 json转换成std::map源码,无需编译,无需关心引用位置,直接引用即可使用
在 C++ 中,你可以使用 `<map>` 容器来解决问题。这里是一个简单的解决方案,假设你已经有了一个包含整数和它们对应的字符串下标的 map,我们可以遍历每个输入字符串并检查是否与模板匹配:
```cpp
#include <iostream>
#include <string>
#include <map>
using namespace std;
bool isMatch(vector<int>& a, vector<string>& strings, map<int, int>& template_map) {
// 验证输入字符串数量和数组长度是否一致
if (strings.size() != a.size()) {
return false;
}
// 遍历每个字符串
for (const auto& s : strings) {
// 检查字符串长度
if (s.length() != a.size()) {
return false;
}
// 检查每个字符是否都在模板映射中且唯一
string temp_s = "";
bool match = true;
for (char c : s) {
if (template_map.find(c) == template_map.end()) {
match = false;
break;
}
if (temp_s[template_map[c]] != c) {
match = false;
break;
}
temp_s += c;
}
// 输出结果
cout << (match ? "YES\n" : "NO\n");
}
return true;
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> a(n);
for (int& ai : a) {
cin >> ai;
}
int m;
cin >> m;
vector<string> strings(m);
for (auto& si : strings) {
cin >> si;
}
map<int, int> template_map;
for (int i = 0; i < n; ++i) {
template_map[a[i]] = i;
}
isMatch(a, strings, template_map);
}
return 0;
}
```
在这个程序里,我们首先创建一个 `template_map` 来存储数组 `a` 中的整数及其索引,然后在 `isMatch` 函数中检查每个输入字符串是否满足条件。时间复杂度取决于字符串的数量,大致为 O(m),其中 m 是字符串总数。
阅读全文