LeetCode 9.回文数

目录

 

0. 题目描述

1. 解题分析 

2. 官方解答


0. 题目描述

 

1. 解题分析 

(1)思路还是比较直接简单:

不使用字符串的话,那就提取数位,然后进行判断。

#include<iostream>
#include<vector>

bool isPalindrome(int x) {
	if (x < 0) {
		return false;
	}
	if (x < 10) {
		return true;
	}

	vector<int> judge;
	while (x > 0) { //提取每一个数位
		judge.push_back(x % 10);
		x /= 10;
	}

	int middle = (judge.size() - 1) / 2;

	if (judge.size() % 2 != 0) { //如果数位为奇数
		for (int i = 1; i <= middle; i++) { //以中间数字为对称轴,逐个向两边对比
			if (judge[middle - i] != judge[middle + i]) {
				return false;
			}
		}
		return true;
	} else { //如果数位为偶数
		for (int i = 0; i < middle + 1; i++) { //从中间数字开始,逐个向两边对比
			if (judge[middle - i] != judge[middle + i + 1]) {
				return false;
			}
		}
		return true;
	}
}

复杂度分析

  • 时间复杂度 O(n)

  • 空间复杂度 O(n) 。

    测试用时204ms,优于43%左右的提交。

2. 官方解答

猜你喜欢

转载自blog.csdn.net/weixin_40801204/article/details/82794735