C++中的回文数

Palindrome number in C++

本文关键字:回文 C++      更新时间:2023-10-16

我正试图编写一个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;