パлиндローム数を判別する方法をC++で教えてください。

パлиндローム(回文数)を判断するにはさまざまな C++ の方法がありますが、ここでは一般的な 2 つの方法を紹介します。

整数文字列に変換して、先頭文字と末尾文字が同じか比較する

#include <iostream>
#include <string>

bool isPalindrome(int num) {
    std::string str = std::to_string(num);
    int left = 0;
    int right = str.length() - 1;
    
    while (left < right) {
        if (str[left] != str[right]) {
            return false;
        }
        left++;
        right--;
    }
    
    return true;
}

int main() {
    int num;
    std::cout << "请输入一个整数:";
    std::cin >> num;
    
    if (isPalindrome(num)) {
        std::cout << "是回文数" << std::endl;
    } else {
        std::cout << "不是回文数" << std::endl;
    }
    
    return 0;
}

二番目の方法:整数を逆転させて、逆転後の整数と元の整数が等しいかどうかを判断する。

#include <iostream>

bool isPalindrome(int num) {
    if (num < 0 || (num % 10 == 0 && num != 0)) {
        return false;
    }
    
    int reversedNum = 0;
    while (num > reversedNum) {
        reversedNum = reversedNum * 10 + num % 10;
        num /= 10;
    }
    
    return num == reversedNum || num == reversedNum / 10;
}

int main() {
    int num;
    std::cout << "请输入一个整数:";
    std::cin >> num;
    
    if (isPalindrome(num)) {
        std::cout << "是回文数" << std::endl;
    } else {
        std::cout << "不是回文数" << std::endl;
    }
    
    return 0;
}

回文数であるかを判定する2通りの方法があり、1つ目は整数を文字列に変換して比較し、2つ目は整数を直接逆順に操作します。

bannerAds