求字符串a在B里出现次数用哈希怎么做c++
时间: 2024-10-24 21:06:31 浏览: 19
在C++中,你可以使用哈希表(unordered_map或unordered_set)以及字符串的一些特性来计算字符串A在字符串B中的出现次数。以下是一个简单的示例:
```cpp
#include <iostream>
#include <unordered_map>
#include <string>
std::size_t count_occurrences(const std::string& strB, const std::string& strA) {
std::unordered_map<char, int> charCount; // 用于存储B中每个字符的计数
for (char c : strB) {
if (strA.find(c) != std::string::npos) { // 如果A中有这个字符
charCount[c]++; // B中的该字符计数加一
}
}
size_t occurrences = 0;
for (const auto &pair : charCount) {
if (pair.first == strA[0]) { // A的第一个字符匹配到B中的字符
occurrences += pair.second / strA.length(); // 因为每个A都是由相同的字符组成,所以除以A的长度即可得到出现次数
}
}
return occurrences;
}
int main() {
std::string strB("Hello World!");
std::string strA("llo");
std::cout << "String A appears " << count_occurrences(strB, strA) << " times in string B.\n";
return 0;
}
```
在这个例子中,我们首先遍历字符串B,统计每个字符,并检查它们是否也在字符串A中。然后,对于找到的每个字符,如果它恰好是A的第一个字符,我们就将它的计数除以A的长度,因为A的所有实例都是由相同字符组成的。
阅读全文