gpt4 book ai didi

c++ - 如何使用二进制搜索将所有重复的字符串打印在排序数组中?

转载 作者:行者123 更新时间:2023-12-02 09:48:15 26 4
gpt4 key购买 nike

仅仅使用二进制搜索,如何获得带有重复项的请求元素,因为重复项将是一个接一个的,搜索的条件是什么?
可以说这是由用户输入的给定数组,我们必须搜索“efg”是否存在,我们不知道索引,也不重复重复多少次,但是如果存在,则打印重复次数。

array[][10]={"abc","efg","efg","jkl","jkl","jhk"}

最佳答案

您可以使用upper_bound查找比"efg"大的第一个元素,然后使用lower_bound查找"efg"的第一个实例。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<string> V{ "abc", "efg", "efg", "jkl", "jkl", "jhk" };
cout << upper_bound(V.cbegin(), V.cend(), "efg") - lower_bound(V.cbegin(), V.cend(), "efg") << endl;
}
编辑:要对此进行改进,您可以首先使用 lower_bound来检查字符串是否存在于数组中。如果是这样,则使用 upper_bound计算no。实例。

关于c++ - 如何使用二进制搜索将所有重复的字符串打印在排序数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63055622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com