用指针写m到n之间的回文数
时间: 2024-10-28 08:13:14 浏览: 7
用指针来生成m到n之间的所有回文数,可以采用双指针技巧,一个指向数字开始的位置,另一个指向数字结束的位置,并逐步向中心移动。这里以C++为例,假设我们要生成的是正整数范围内的回文数:
```cpp
#include <iostream>
using namespace std;
bool isPalindrome(int num) {
int start = 0;
int end = num;
while (start < end / 10) { // 当左指针小于右指针除以10的结果时继续
if (num / 10 % 10 != num % 10) { // 如果首位和末位不相等,不是回文
return false;
}
num /= 10; // 移动右指针到下一位
start++;
end -= 9; // 因为每次检查完第一位,末位减去9,相当于去掉了一位
}
if (end >= start) { // 到了最后只剩下一位或一位都没有,也是回文
return true;
} else {
return false;
}
}
void printPalindromes(int m, int n) {
for (int i = m; i <= n; ++i) {
if (isPalindrome(i)) {
cout << i << " ";
}
}
}
int main() {
int m = 100, n = 200; // 示例范围
cout << "Palindromes between " << m << " and " << n << " are:\n";
printPalindromes(m, n);
return 0;
}
```
运行这个程序,它将打印出100到200之间所有的回文数。
阅读全文