[英]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.