1. 题目描述
输入一个数字,判断其是否是回文数。回文数是正向拼写与反向拼写都一样的数字。例如:121 和 1234554321 都是回文数。
2. 算法分析
前一篇博客 Raptor-回文字符串判断 在最后给出了如何利用回文字符串的判断程序来判断数字是否为回文数,但是需要在原始输入数字中加入特殊符号,以便形成字符串。本篇博客将介绍基于数组的回文数字判断,无需在原始输入中加入特殊符号以形成字符串。
核心思路两部分:
1)首先通过数字分解,将数字存储在数组中(参考博客 Raptor-数字分解);
2)利用回文字符串的思路,直接对上述获得的数组进行处理(参考上面提到的回文字符串判断博客)。
通过数字分解,将输入数字存储到数组 a 中,然后定义两个循环变量 j=1, k=length_of(a),分别从头部和尾部向数组中间逼近,判断是否为回文数。
具体分析细节见两篇博客,下面直接给出完整流程图。