gpt4 book ai didi

c++ - 寻找整数中的重复模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:38 26 4
gpt4 key购买 nike

我正在尝试查找整数中的重复模式。为此,我使用单独存储每个数字的 vector 。我想把整个事情写成一个打印出数字重复模式的函数。这些数字大多为 12 位数字。

一个例子:
号码是 057 987 051 2057
我希望函数打印出来:
057
05
它还应该只打印出最长的循环模式。我目前一直在研究如何在 C++ 中实现整个过程。我还想知道是否有任何库支持我正在寻找的功能。

提前致谢!

编辑:

for (vector<int>::iterator it = m_number.begin(); it != m_number.end(); ++it) {
int follower = *(it + 1);
for (vector<int>::iterator jt = it + 1; jt != m_number.end(); ++jt) {
if (*jt == *it) {
if (*(jt + 1) == follower)
cout << *jt;
}
}
cout << endl;
}

这是我迄今为止尝试过的。这显然还行不通,但我希望它能让您了解我希望该功能执行的操作。我尝试使用两个循环遍历 m_number vector (顺便说一句,它包含我要检查的整数。)。

最佳答案

你可以使用类似的东西:

std::set<std::vector<int>> GetRepetitingPatterns(const std::vector<int>& v)
{
std::set<std::vector<int>> res;
for (std::size_t size = v.size() - 1; size != 0; --size) {
std::set<std::vector<int>> s;

for (std::size_t i = 0; i + size != v.size() + 1; ++i) {
auto [it, inserted] = s.emplace(v.begin() + i, v.begin() + i + size);
if (!inserted) {
res.insert(*it);
}
}
#if 1 // Longest only
if (!res.empty()) {
return res;
}
#endif
}
return {};
}

Demo

和变化(所有/最长和最小尺寸): Demo

关于c++ - 寻找整数中的重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54673892/

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