C++中的回文数
Palindrome number in C++
我正试图编写一个C++程序来确定一个数字是否是回文。这是我的密码。问题是,即使数字是回文,程序也会返回false。
#include <cstdlib>
#include <iostream>
#include <string>
bool is_palindrome(int n){
std::string num = std::to_string(n);
int len = num.length();
bool check = false;
for(int i=0; i < len/2; i++){
if(num[i] == num[len-i])
check = true;
}
return check;
}
int main(){
int num = 23232;
std::cout<< is_palindrome(num) << std::endl;
return 0;
}
我的逻辑缺失了什么。
num数组的最大索引是len - 1
,而不是len
。所以使用:
if (num[i] == num[len - 1 - i])
将第一个数组索引与最后一个数组索引进行比较等等
还有另一个错误,因为即使有一个重合,is_palindrome()
也将返回true
(即,如果任何2个索引匹配,则返回true
)。因此,当checked
变成true
时,它再也不会变成false
。
您最终可以更改为:
for (int i = 0; i < len/2; i++)
if (num[i] != num[len - 1 - i])
return false;
return true;
相关文章:
- C++:正在检查LinkedList中的回文-递归方法-错误
- Usaco第1.6节主要回文
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 将 S1 转换为回文,并将 S2 作为其子字符串
- 数回文词
- 最长的回文子串(C++帮助)
- 有人可以详细解释这个回文代码是如何工作的吗?
- 回文递归版本
- 如何检查C ++ STL列表是否为回文?
- 回文数在 1 到 10000 之间
- C++ - 检查结构数据类型中的单词是否为回文
- 是回文作业练习
- 回文递归不停止
- 整数数组中最长的回文
- 回文测试
- 最大的回文产品(Project Euler)——C++
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 递归回文问题的时间复杂度,C++
- 程序以查找给定字符串中回文的子字符串的数量
- 递归回文检查,不使用向量、大小或其他参数