簡體   English   中英

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM