回文数 II

回文数 II

【描述】
判断一个非负整数 n 的二进制表示是否为回文数
0 <= n <= 2^32 - 1
【样例】
样例1

输入: n = 0
输出: True
解释:
0 的二进制表示为:0。
样例2

输入: n = 3
输出: True
解释:
3 的二进制表示为:11。
样例3

输入: n = 4
输出: False
解释:
4 的二进制表示为:100。
样例4

输入: n = 6
输出: False
解释:
6 的二进制表示为:110。
【方法】
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

bool isPalindrome(int n) {

	vector<int> digits;

	if (n == 0) {
		return true;
	}

	// 求一个菲负数 的 二进制表示(逆序)
	while (n != 0) {
		int i = n % 2;
		digits.push_back(i);
		n /= 2;
	}

	int size = digits.size();
	int sizeHalve = size / 2;
	for (int i = size - 1; i >= sizeHalve; i--) {
		if (digits[i] != digits[size - 1 -i]) {
			return false;
		}
	}
	return true;

}

int main() {

	int n = 3;
	printf("请输入测试数字;");
	while (scanf("%d", &n) != EOF) {
		printf("\n");
		if (isPalindrome(n)) {
			printf("isPalindrome——true\n");
		}else {
			printf("isPalindrome——false\n");
		}
		printf("==========================\n");
		printf("请输入测试数字;");
	}
	return 0;

}
【结果】
请输入测试数字;0

isPalindrome——true
==========================
请输入测试数字;1

isPalindrome——true
==========================
请输入测试数字;2

isPalindrome——false
==========================
请输入测试数字;3

isPalindrome——true
==========================
请输入测试数字;4

isPalindrome——false
==========================
请输入测试数字;5

isPalindrome——true
==========================
请输入测试数字;6

isPalindrome——false
==========================
请输入测试数字;7

isPalindrome——true
==========================
posted @ 2022-02-18 21:30  hellozwx  阅读(104)  评论(0编辑  收藏  举报