用3种方法用c++判断一个数是否为回文数
时间: 2024-12-10 11:37:56 浏览: 27
在C++中,有多种方法可以判断一个数是否为回文数。回文数是指正读反读都一样的数字,如121、12321等。以下是三种常见的方法:
1. **字符串比较法**:
将整数转换成字符串,然后比较原字符串和反转后的字符串是否相等。如果相等,则它是回文数。
```cpp
bool isPalindrome(int num) {
std::string str = std::to_string(num);
std::string reversedStr = str;
std::reverse(reversedStr.begin(), reversedStr.end());
return str == reversedStr;
}
```
2. **迭代数组法**(适用于只包含非负整数的情况):
可以创建两个指针分别指向字符串的开头和结尾,逐次比较它们指向的字符是否相等。
```cpp
bool isPalindrome(int num) {
char* start = &std::to_string(num)[0];
char* end = start + std::strlen(start) - 1;
while (start < end) {
if (*start != *end)
return false;
++start;
--end;
}
return true;
}
```
3. **递归法**:
使用递归函数从中间向两边对比字符。
```cpp
bool isPalindrome(int num, int start = 0, int end = 0) {
if (start >= end)
return true;
if (num / 10 > start || (num / 10 == start && num % 10 != start))
return false;
return isPalindrome(num / 10, start + 1, end - 1);
}
```
这里假设`isPalindrome`默认接受数字本身作为输入,并可以指定开始和结束位置,如果不指定则认为是从第一个和最后一个数字开始比较。
阅读全文