不要用python 用c++实现
时间: 2023-08-10 08:40:50 浏览: 60
好的,以下是 C++ 的实现代码:
```cpp
#include <iostream>
#include <string>
#include <bitset>
#include <vector>
using namespace std;
bool is_palindrome(int x) {
string s = to_string(x);
return equal(s.begin(), s.end(), s.rbegin());
}
bool is_double_palindrome(int x) {
string s = bitset<32>(x).to_string();
s.erase(0, s.find_first_not_of('0'));
return is_palindrome(x) && is_palindrome(stoi(s));
}
vector<int> find_double_palindromes(int left, int right) {
vector<int> res;
for (int i = left; i <= right; i += 2) {
if (is_double_palindrome(i)) {
res.push_back(i);
}
}
return res;
}
int main() {
int left, right;
cin >> left >> right;
vector<int> res = find_double_palindromes(left, right);
for (int x : res) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
这个算法的时间复杂度为 $O(N\log N)$,其中 $N$ 是数的最大值。如果需要进一步优化,可以使用更高效的判断回文数的算法,比如 Manacher 算法。
阅读全文