最大回文数3位

Largest Palindrome 3 digits C++

本文关键字:3位 回文      更新时间:2023-10-16

我不明白为什么这段代码不工作。它甚至没有经过for循环和嵌套循环。我是编程新手。我一直在练习回答欧拉问题。抱歉,如果我的代码是可怕的。

 #include <iostream>
    #include <string>
    using namespace std;
    bool isPalindrome(int x) {
        string str = to_string(x);
        for(string::reverse_iterator rit=str.rbegin(); rit!=str.rend(); ++rit) {
            string pal = to_string(*rit);
            if(pal == str) {
                return true;
            }else {
                return false;
            }
        }
    }
    int main() {
        int max[] = {0, 0};

        for(int i=999; i>99; i--) {
            for( int j =999; j>99; j--) {
            int pal = i*j;
                if(isPalindrome(pal) == true) {
                max[1] = pal;
                if(max[1] > max[0]){
                    max[0] = pal;
                    }
                }
            }
        }
        cout << max[0];
    }

我认为在比较完整字符串后,您需要在isPalindrome中返回true。即return true;应在for环外

和检查最大的3位回文为什么你传递int pal = i*j; ie为第一次迭代999*999。检查这个

bool isPalindrome(int x) {
string str = to_string(x);
string pal = str;
std::reverse(pal.begin(),pal.end()); 
  if(pal == str) {
      return true;
  }else {
      return false;
  }
}